selenium中元素定位的方法基本已經(jīng)講解完成,那么接下來(lái)主要講解一些selenium的實(shí)用操作技巧昔善。本篇主要講解“瀏覽器查看信息技巧”的一些方法,包括“獲取當(dāng)前窗口title,url地址,截屏以及切換窗口的操作”,希望感興趣的小伙伴可以堅(jiān)持看下去同時(shí)歡迎提出寶貴的意見(jiàn)讓我們一起進(jìn)步汉规!
前置條件:
from selenium import webdriver
driver=webdriver.Chrome()
driver.implicitly_wait(5)
driver.get('https://www.baidu.com')
01:獲取當(dāng)前窗口title(driver.title)
(1)獲取并打印百度初始頁(yè)面titlle
print(driver.title)
(2)獲取并打印輸入完關(guān)鍵字后頁(yè)面tittle:只要判斷這個(gè)元素存在就證明頁(yè)面已加載成功
driver.find_element_by_id('1')
driver.find_element_by_id('kw').send_keys('python百度百科\n')
print(driver.title)
02:獲取當(dāng)前窗口地址欄url(driver.current_url)
注意:隨著窗口內(nèi)容標(biāo)題更新時(shí),title和current_url也會(huì)隨之而更新即横。頁(yè)面更新時(shí)可以通過(guò)查找更新頁(yè)面的元素來(lái)判斷頁(yè)面加載完成
(3)獲取并打印當(dāng)前頁(yè)面url地址
print(driver.current_url)
03:截屏(整個(gè)頁(yè)面和單頁(yè)面)
①整個(gè)頁(yè)面:driver.get_screenshot_as_file(img_path)
②單個(gè)頁(yè)面:web_element screenshot(img_path)
注意:截圖單個(gè)頁(yè)面需要先獲取到這個(gè)圖片對(duì)應(yīng)的元素,然后再調(diào)用 screenshot 方法
(4)獲取整個(gè)頁(yè)面截圖并存在指定文件路徑
driver.get_screenshot_as_file('C:\\Users\\qin\\Desktop\\1.png')
(5)獲取頁(yè)面的單個(gè)元素
ele=driver.find_element_by_id('lg')
ele.screenshot('C:\\Users\\qin\\Desktop\\12.png')
driver.quit()
04:切換窗口
1)概述:切換到新的窗口操作
①通過(guò)循環(huán)遍歷driver.window_handles獲取當(dāng)前瀏覽器所有窗口的handle
②driver.switch_to.window(handle)方法切入新窗口
③檢查該窗口特點(diǎn),是否為要切入的那個(gè)
④切換到最初的窗口:保存主窗口handle2)關(guān)閉當(dāng)前窗口方法: driver.close()
3)注意事項(xiàng):切入到新窗口的時(shí)候就失去了對(duì)原來(lái)窗口的控制權(quán),如果想點(diǎn)擊原來(lái)窗口的元素是沒(méi)有效果的。想回到最初的窗口可以把當(dāng)前的 handle 字符串保存下來(lái)绅络。
(1)需求描述:百度松勤點(diǎn)擊第一個(gè)搜索結(jié)果,跳轉(zhuǎn)到一個(gè)新的窗口并點(diǎn)擊“全部課程分類(lèi)”
driver.find_element_by_id('kw').send_keys('松勤\n')
driver.find_element_by_css_selector('[id="1"] h3 a').click()
driver.find_element_by_css_selector('span [href="/course/explore"]').click()
(2)執(zhí)行結(jié)果:NoSuchElementException: Message: no such element: Unable to locate element
(3)原因解釋?zhuān)篸river 對(duì)象只能操作之前控制的第一個(gè)打開(kāi)的窗口,不能控制新打開(kāi)的窗口
(4)解決方法:通過(guò)切換窗口來(lái)解決
通過(guò)切換窗口后的代碼如下:
driver.find_element_by_id('kw').send_keys('松勤\n')
driver.find_element_by_css_selector('[id="1"] h3 a').click()
# 保存主窗口handle
mainWindow = driver.current_window_handle
for handle in driver.window_handles:
# 切換到新窗口
driver.switch_to.window(handle)
# 通過(guò)當(dāng)前網(wǎng)頁(yè)標(biāo)題來(lái)判斷是否為要切入的窗口
if '軟件測(cè)試在線教育領(lǐng)跑者'in driver.title:
break
driver.find_element_by_css_selector('span [href="/course/explore"]').click()
#關(guān)閉當(dāng)前窗口
driver.close()
#切換到主窗口
driver.switch_to.window(mainWindow)
#清空之前輸入的內(nèi)容
input_ele=driver.find_element_by_id('kw')
input_ele.clear()
#重新輸入搜索內(nèi)容
driver.find_element_by_id('kw').send_keys('python百度百科\n')