Python+Selenium元素定位不到的問題及解決辦法


在做Web自動化測試的時候經常會遇到元素定位不到的問題,結合實例總結一下原因和解決方法:

1.由於iFrame或者Frame的原因無法定位

實例:163郵箱登錄頁面,發現郵箱和密碼的inputbox識別不到,登錄btn也識別不到

初始腳本:

driver.find_element_by_name('email').send_keys("daisywang0726")
driver.find_element_by_name('password').send_keys("God1010andy")
driver.find_element_by_id('dologin').click()

 原因分析: 

查看頁面發現是這三個元素是嵌入的iframe里邊的,WebDriver只能識別一個頁面中的元素,對於嵌入頁面的元素是無法直接識別到的,如下圖:

 解決方案:

當元素處於iframe中,需要先跳轉到iframe中才能被識別,如下:

調用_switch_to.frame()跳轉進iframe。

driver._switch_to.frame(0)
driver.find_element_by_name('email').send_keys("daisywang0726")
driver.find_element_by_name('password').send_keys("God1010andy")
driver.find_element_by_id('dologin').click()
driver._switch_to.default_content()#driver.switch_to.parent_frame()切換到上一層frame,driver.switch_to.derault_content()跳回到最外層頁面

2.由於iFrame或者Frame的原因無法定位

原因:由於沒有設置等待時間,想要定位的元素還沒有加載出來,導致無法定位。

解決方法:Selenium提供三種等待方式來實現:

  • 強制等待sleep()
  • 隱式等待implicitly_wait()
  • 顯示等待WebDriverWait()

詳細實現方式請查看https://www.cnblogs.com/daisyatcnblog/p/12337092.html


免責聲明!

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



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