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
需設置在瀏覽器初始化后