selenium爬取網頁內容知識點總結(代碼均親測可用)


1.selenium獲取網頁iframe內容

語法:driver.switch_to.frame(iframe)

①通過tag_name

driver.get(url)
#該iframe為頁面的第幾個iframe
iframe = driver.find_elements_by_tag_name('iframe')[0]
driver.switch_to.frame(iframe)

 

②通過iframe的id或class_name

iframe = driver.find_element_by_id("iframe1")
#iframe = driver.find_element_by_class_name("iframe1")
driver.switch_to.frame(iframe)

 

2.selenium控制鼠標懸停在某個位置

#導包
from
selenium.webdriver.common.action_chains import ActionChains

#ActionChains中的函數
click(on_element=None)    #單擊鼠標左鍵 click_and_hold(on_element=None)    #點擊鼠標左鍵,按住不放 context_click(on_element=None) #點擊鼠標右鍵 double_click(on_element=None) #雙擊鼠標左鍵 drag_and_drop(source, target) #拖拽到某個元素然后松開 drag_and_drop_by_offset(source, xoffset, yoffset) #拖拽到某個坐標然后松開 move_by_offset(xoffset, yoffset) #鼠標移動到距離當前位置(x,y) move_to_element(to_element) #鼠標移動到某個元素 move_to_element_with_offset(to_element, xoffset, yoffset) #將鼠標移動到距某個元素多少距離的位置 release(on_element=None) #在某個元素位置松開鼠標左鍵 perform() #執行鏈中的所有動作

 實例:

#定位元素位置,可通過xpath、id、tag_name、class_name、selector等
container= driver.find_element_by_xpath('//*[@id="container"]/div[1]')
ActionChains(driver).move_to_element(canvas).perform

 

3.selenium獲取網頁中style display:none的元素

 在UI自動化測試中,有時因為前端元素被設置為不可見導致頁面元素無法定位,此時,我們可以通過JavaScript修改頁面元素屬性來將元素設為可見。

#首先通過selenium封裝好的方法document去獲取元素,document提供以下方法來定位元素:
#    ①getElementById():返回對指定ID第一個對象的引用
#    ②getElementsByName() :返回帶有指定名稱的對象集合
#    ③getElementsByTagName():返回帶有指定標簽名的對象集合
#此次我們通過元素id獲取該元素
js = "document.getElementById("table1").style.display='block';"
#執行js腳本
driver.execute_script(js)

 

4.selenium爬取網頁時修改網頁某元素屬性

#document獲取原色可參考上一條,
js='document.querySelector("#container > div:nth-child(2)").style.left="500px"'
driver.execute_script(js)

 

document的querySeletor和querySelectorAll的區別:

  querySelector只返回匹配的第一個元素,如果沒有匹配項,返回null。 

  querySelectorAll返回匹配的元素集合,如果沒有匹配項,返回空的nodelist(節點數組)。

  例如:找出body標簽下的第一個div

document.body.querySelectorAll("div")[0] 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM