Selenium的第四天打卡——Selenium瀏覽器應用(完整版)

Selenium瀏覽器應用

目錄

Selenium瀏覽器應用

一、瀏覽器操作示例代碼

1.設置瀏覽器縮放大小

2.瀏覽器前進和后退

3.瀏覽器刷新

二、WebDriver常見方法

三、鼠標事件示例

四、鍵盤事件示例

五、獲取斷言信息

六、窗口的切換

七、關鍵注意事項


一、瀏覽器操作示例代碼

1.設置瀏覽器縮放大小
import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Servicedriver_path = r"D:\tools\chromedriver.exe"
service = Service(executable_path=driver_path)
driver = webdriver.Chrome(service=service)driver.maximize_window()
# #隱式等待
driver.implicitly_wait(10)
driver.get("http://www.baidu.com")
time.sleep(10)# 設置特定窗口尺寸(寬480,高800)
driver.set_window_size(480, 800)
2.瀏覽器前進和后退
import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Servicedriver_path = r"D:\tools\chromedriver.exe"
service = Service(executable_path=driver_path)
driver = webdriver.Chrome(service=service)driver.maximize_window()
driver.implicitly_wait(10)
driver.get("http://www.baidu.com")driver.back()  # 后退
time.sleep(3)
driver.forward()  # 前進
time.sleep(3)
3.瀏覽器刷新
import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Servicedriver_path = r"D:\tools\chromedriver.exe"
service = Service(executable_path=driver_path)
driver = webdriver.Chrome(service=service)driver.maximize_window()
driver.implicitly_wait(10)
driver.get("http://www.baidu.com")
time.sleep(2)driver.refresh()  # 刷新頁面
time.sleep(3)

二、WebDriver常見方法

element.click()      # 點擊元素
element.send_keys()  # 輸入內容
element.clear()      # 清除內容
element.submit()     # 提交表單

三、鼠標事件示例

在WebDriver中,將這些關于鼠標操作的方法封住在ActionChains類中
ActionChains類提供了鼠標操作的常用方法
1.perform()執行所有ActionChains中存儲的行為
2.context_click()右擊
3.double_click()雙擊
4.drag_and_drop()拖動

5.move_element()鼠標懸停
這里只演示鼠標懸停操作,如下:

import time
from selenium.webdriver.common.action_chains import ActionChains
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import Bydriver_path = r"D:\tools\chromedriver.exe"
service = Service(driver_path)
driver = webdriver.Chrome(service=service)driver.get("http://www.baidu.com")
time.sleep(2)# 鼠標懸停到設置按鈕
st_button = driver.find_element(By.CSS_SELECTOR, 'span[id="s-usersetting-top"]')
ActionChains(driver).move_to_element(st_button).perform()
time.sleep(2)

四、鍵盤事件示例

import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
#導入keys類 才能調用鍵盤
from selenium.webdriver.common.keys import Keysdriver_path = r"D:\tools\chromedriver.exe"
service = Service(driver_path)
driver = webdriver.Chrome(service=service)driver.maximize_window()
driver.implicitly_wait(10)
driver.get("http://www.baidu.com")
time.sleep(2)
#定位輸入框
search_bx = driver.find_element(By.CSS_SELECTOR, 'input[id="kw"]')
search_bx.send_keys("向日葵葵")
time.sleep(3)
#調用哪個就寫哪個英文名,注意大寫
#鍵盤刪除鍵 刪除多余的葵,這個鍵只能刪除一個字符,要想多刪,使用乘法
search_bx.send_keys(3 * Keys.BACK_SPACE)
time.sleep(2)# 全選內容
search_bx.send_keys(Keys.CONTROL, 'a')
time.sleep(2)# 回車搜索
search_bx.send_keys(Keys.ENTER)
time.sleep(2)

五、獲取斷言信息

?五、獲取斷言信息:為了判斷這個操作是否成功
判斷方式:1.文本信息 2.title信息 3.url地址

import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keysdriver_path = r"D:\tools\chromedriver.exe"
service = Service(driver_path)
driver = webdriver.Chrome(service=service)driver.maximize_window()
driver.implicitly_wait(10)
driver.get("http://www.baidu.com")
time.sleep(2)search_bx = driver.find_element(By.CSS_SELECTOR, 'input[id="kw"]')
search_bx.send_keys("長孫無忌")
search_bx.send_keys(Keys.ENTER)
time.sleep(3)#獲取搜索出來的第一頁的內容標題
#如果這個方法獲取到的是多個值,則會把值放到一個列表中
# 注意:這里要使用find_elements,復數形式
titles = driver.find_elements(By.XPATH, '//div[@id="content_left"]//h3')
for t in titles:print(t.text)time.sleep(3)#獲取網頁標題 格式:搜索內容_百度搜索
print(driver.title)#獲取當前網頁url:
print(driver.current_url)# 六、設置元素等待
# 為了解決頁面加載太慢,而代碼執行過快,元素定位不到的問題
# ◎ 強制等待# time.sleep(4)這個是python中自帶的日期時間模塊完成的
# ◎  隱式等待driver.implicitly_wait(10)

六、窗口的切換

#七、窗口的切換
#每個窗口也都有句柄的概念,類似于id,具有唯一性
#1.直接切換
import time
from selenium.webdriver.common.action_chains import ActionChains
from  selenium import webdriver
from selenium.webdriver.chrome.service import Service
from  selenium.webdriver.common.by import By
#導入keys類 才能調用鍵盤
from  selenium.webdriver.common.keys import Keys
driver_path=(r"D:\newmade\pythonStudy\chromeDriver\chromedriver-win64\chromedriver.exe")
# #創建管理對象
service=Service(driver_path)
#打開瀏覽器
driver=webdriver.Chrome(service=service)#窗口最大化
driver.maximize_window()
#隱式等待
driver.implicitly_wait(10)
#打開網頁
driver.get("http://www.baidu.com")
time.sleep(2)#定位輸入框
search_bx=driver.find_element(By.CSS_SELECTOR,'input[id="kw"]')search_bx.send_keys("長孫無忌")search_bx.send_keys(Keys.ENTER)
time.sleep(3)#獲得句柄
windowhandle=driver.current_window_handle
print(windowhandle)#點擊使得可以跳入第二個窗口
search_bx=driver.find_element(By.CSS_SELECTOR,'div[class="_text_pbmk1_40"]').click()
time.sleep(3)#獲取當前瀏覽器所有的窗口句柄,是列表形式的
handles=driver.window_handles
print(handles)handle2=driver.current_window_handle#根據句柄進行切換
for handle in handles:if handle!=handle2:driver.switch_to.window(handle)time.sleep(10)#2.根據下標進行窗口切換,下標為-1的是最新打開的窗口,0的是第一個打開的窗口
driver.switch_to.window(handles[0])

七、關鍵注意事項

  • 元素定位時使用復數形式find_elements獲取多個元素
  • 鍵盤操作需導入Keys
  • 鼠標操作需導入ActionChains
  • 隱式等待implicitly_wait需設置在瀏覽器初始化后

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/84992.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/84992.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/84992.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

PMO價值重構:從項目管理“交付機器”到“戰略推手”

在數字化轉型浪潮中,項目管理辦公室(PMO)正經歷著前所未有的角色蛻變。傳統上,PMO往往被視為項目管理的“交付機器”,專注于項目的按時交付和資源分配。然而,隨著企業對戰略執行的重視,PMO正逐漸…

本地依賴庫的版本和庫依賴的版本不一致如何解決?

我用的 yarn v4 版本,所以以下教程命令都基于yarn 這里假設我報錯的庫名字叫 XXXXXXXX,依賴他的庫叫 AAAAAAAA 排查解決思路分析: 首先查看一下 XXXXXXXX 的依賴關系,執行 yarn why XXXXXXXX 首先我們要知道 yarn 自動做了庫…

SQLiteStudio - 免費開源、輕量高效,跨平臺的 SQLite 數據庫管理工具,代替 Navicat for SQLite

管理 SQLite 數據庫就用這款軟件,真的早該摒棄破解和盜版的 Navicat 了。 SQLiteStudio 是一款專注于管理 SQLite 數據庫 的桌面軟件,用于瀏覽和編輯 SQLite 數據庫文件。軟件的作者是來自波蘭的開發者 Pawe? Salawa,他是一位擁有 20 年 Ja…

DeepSeek R1-0528 新開源推理模型(免費且快速)

DeepSeek推出了新模型,但這不是R2! R1-0528是DeepSeek的最新模型,在發布僅數小時后就在開源社區獲得了巨大關注。 這個悄然發布的模型DeepSeek R1-0528,已經開始與OpenAI的o3一較高下。 讓我來詳細介紹這次更新的新內容。 DeepSeek R1-0528 發布 DeepSeek在這次發布中采…

Opera Neon發布該公司首款“AI代理”瀏覽器

Opera 的瀏覽器產品組合今日迎來了新成員。Opera Neon 是該公司首款“AI 代理”瀏覽器,旨在“重新思考瀏覽器在代理網絡中的角色”。開發人員聲稱,Neon 能夠理解用戶的意圖,并利用 AI 驅動的功能將其轉化為行動。 Opera Neon 由三個主要部分…

網絡安全之Web滲透加解密

項目基本使用 準備環境:node.js python chrome npm install chrome-remote-interface pip install playwright playwright install chromium pip install mitmproxy ............... 第一步啟動cdp.js。 第二步使用python .\cdp_load.py vue_demo,連…

【VSCode-Qt】Docker遠程連接的項目UI文件在 VSCode 上無法預覽

Docker遠程連接的UI文件在 VSCode 上無法預覽,通常是因為 VSCode 通過遠程開發擴展(Remote - SSH/Docker)連接到 Docker 容器時,某些圖形化功能未正確配置或支持。以下是可能原因和解決方案: 原因分析 X11 轉發未配置…

【HW系列】—web組件漏洞(Strtus2和Apache Log4j2)

本文僅用于技術研究,禁止用于非法用途。 文章目錄 Struts2Struts2 框架介紹Struts2 歷史漏洞匯總(表格)Struts2-045 漏洞詳解 Log4j2Log4j2 框架介紹Log4j2 漏洞原理1. JNDI 注入2. 利用過程 Log4j2 歷史漏洞JNDILDAP 反彈 Shell 流程 Strut…

《深度關系-從建立關系到彼此信任》

陳海賢老師推薦的書,花了幾個小時,感覺現在的人與人之間特別缺乏這種深度的關系,但是與一個人建立深度的關系并沒有那么簡單,反正至今為止,自己好像沒有與任何一個人建立了這種深度的關系,那種雙方高度同頻…

sass基礎語法

Sass(Syntactically Awesome Style Sheets)是一種 CSS 預處理器,提供了比原生 CSS 更強大、更靈活的語法功能。它有兩種語法格式: Sass(縮進語法,.sass 文件)SCSS(CSS-like 語法&am…

【JavaWeb】基本概念、web服務器、Tomcat、HTTP協議

目錄 1. 基本概念1.1 基本概念1.2 web應用程序1.3 靜態web1.4 動態web 2. web服務器3. tomcat詳解3.1 安裝3.2 啟動3.3 配置3.3.1 配置啟動的端口號3.3.2 配置主機的名稱3.3.3 其他常用配置項日志配置數據源配置安全配置 3.4 發布一個網站 4. Http協議4.1 什么是http4.2 http的…

AI in Game,大模型能力與實時音視頻技術融合,交出AI應用新答卷

隨著AI的技術進步和工具普及,尤其是在這兩年的躍進之后,AI在游戲行業內的應用已經逐步由理念設想推向落地實踐。從蔡浩宇披露的AI新游《Whispers From The Star》到GDC上各大廠家呈現的游戲AI新亮點,我們看到了更多AI與游戲的結合方式&#x…

Android Studio 2022.2.1.20 漢化教程

查看Android Studio 版本 Android Studio Flamingo | 2022.2.1 Patch 2 下載:https://plugins.jetbrains.com/plugin/13710-chinese-simplified-language-pack----/versions/stable

常見的分詞算法

常見的分詞方法分類如下: 類型名稱說明優缺點1?? 基于空格/標點Word-level以空格或標點劃分,如 "Hello, world!" → ["Hello", ",", "world", "!"]?簡單,?無法處理新詞,詞…

湖北理元理律師事務所觀察:債務優化如何成為民生安全網

據央行2023年報告,中國家庭債務收入比達137.8%。面對債務高壓,湖北理元理律師事務所的實踐揭示:專業債務規劃的價值不僅是減負數字,更是構建社會穩定的微觀防線。 一、從“催收恐懼”到“主動管理”的轉變 該所服務數據顯示&…

服務器密碼安全運維解決新思路:憑據管理SMS+雙因素SLA認證結合的方案

引言:云服務器安全成本困局 在云計算滲透率突破60%的今天,中小企業正面臨嚴峻的安全悖論:某權威機構數據顯示,72%的云上數據泄露事件源于憑據管理不當,而傳統安全解決方案的采購成本往往超過中小企業年利潤的8%。這種…

Vision Transformer網絡結構

0.前言 參考CSDN大佬(太陽花的小綠豆)的代碼,梳理了一下vit的網絡結構,代碼地址如下: deep-learning-for-image-processing/pytorch_classification/vision_transformer at master WZMIAOMIAO/deep-learning-for-image-processing GitHub …

C++ 圖像處理庫 CxImage 簡介 (遷移至OpenCV)

文章目錄 核心功能特點局限性與替代方案常用方法構造函數從數組創建圖像訪問屬性訪問像素點Windows平臺支持 常用方法遷移至OpenCV CxImage 是一款功能強大的圖像處理類庫,主要用于 Windows 平臺的圖像處理任務。它支持多種圖像格式的加載、保存、編輯及特效處理&am…

【博客系統】博客系統第十一彈:從零開始在 Linux 系統上搭建 Java 部署環境并部署 Web 項目

搭建 Java 部署環境 JDK 1. 更新軟件包 apt 命令詳細介紹 sudo apt-get update2. 安裝 OpenJDK 查找 JDK 包 apt list | grep "jdk"安裝 JDK sudo apt install openjdk-17-jdk注意: 此處安裝的是 OpenJDK,OpenJDK 是一個開源版本的 JDK&am…