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]