python-selenium提供的execute_script調用js操作


自動化編程里會遇到定位下拉框里的元素,

常見場景:

當頁面上的元素超過一屏后,想操作屏幕下方的元素,是不能直接定位到,會報元素不可見的。

這時候需要借助滾動條來拖動屏幕,使被操作的元素顯示在當前的屏幕上。

滾動條是無法直接用定位工具來定位的。selenium里面也沒有直接的方法去控制滾動條,

這時候只能借助JS了,還好selenium提供了一個操作js的方法:

execute_script(),可以直接執行js的腳本。

 

我們可以先讓頁面直接跳到元素出現的位置,然后就可以操作了。同樣需要借助JS去實現。 
元素聚焦:

target = driver.find_element_by_xxxx()
driver.execute_script("arguments[0].scrollIntoView();", target)

 實例:

#用js選擇所屬機構
self.driver.find_elements_by_xpath('//div[2]/div/div/div/div/i')[0].click()  #先點擊下拉按鈕
org = self.driver.find_element_by_xpath('//div[2]/div/div/div[2]/ul[2]/li[7]')  #定位要選擇的元素,注意這里用的是find_element
#scrollIntoView()是DOM API的一部分,需要運行它WebElement但不能在列表的WebElement(S),所以不能用find_elements
self.driver.execute_script("arguments[0].scrollIntoView();", org)  #執行js,使滾動條下滑至要定位的元素位置
time.sleep(3)   #等待幾秒查看滾動條是否下滑
org.click()     #點擊操作

time.sleep(3)

 

scrollIntoView是一個與頁面(容器)滾動相關的API

element.scrollIntoView() 參數默認為true

參數為true:調用該函數,頁面發送滾動,使element的頂部與視圖(容器)頂部對齊

參數為false:使element的底部與視圖(容器)底部對齊


免責聲明!

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



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