seleinum中解決需要定位到iframe中嵌套iframe的問題
簡介
來自一個自學爬蟲的Python小白的經歷:通過網路上的教學視頻,模仿編程,由于視瞥澩比較老舊,技術更新較快,所以有些方面難以做到用視頻教學代碼成功運行,此篇只記錄產生的問題,包括已經解決和未解決的,再次申明,只是小白,只是簡單的記錄問題,
案例
豆瓣使用seleinum自動化登錄
初始代碼
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("https://www.douban.com/")
print("+"*50)
driver.find_element_by_class_name("account-tab-account").click()
print("+"*50)
driver.find_element_by_id("username").send_keys("xxxxx")
print("+"*50)
driver.find_element_by_id("password").send_keys("xxxxx")
print("+"*50)
driver.find_element_by_class_name("btn").click()
# cookies = {i["name"]:i["value"] for i in driver.get_cookies()}
# # print(cookies)
time.sleep(5)
driver.quit()
報錯:
Message: no such element: Unable to locate element: {"method":"css selector","selector":".account-tab-account"} (Session info: chrome=88.0.4324.190)
查看定位的element,如下

seleinum自動化測驗的iframe
- iframe是加載頁面的一個元素,自動化測驗中會定位到第一個iframe,當需要定位到需要的iframe的時候,比如案例中的登錄頁面就是在另一個iframe中,以下為解決方法,都經過親身測驗,
iframe切換的問題
- 使用方式
driver.switch_to.frame(iframe)注driver.switch_to_frame在我做的案例中會出現橫線,可能是方法不可用
解釋:查看幫助,引數iframe可以是id、name、或者element物件的定位方式(對應iframe的xpath)- 當iframe中有id name class
- 直接使用
switch_to.frame()傳遞對應的id,name值
也可以通過by_id,by_class先定位到對應id,class,之后傳遞到switch_to中
- 直接使用
- 當iframe中沒有id,class,name
- 可以向引數iframe中傳遞對應的iframe的xpath(案例中所用方法)
- 解決代碼:請求代碼后插入
iframe = driver.find_element_by_xpath("//div[@id='anony-reg-new']/div/div[1]/iframe") driver.switch_to.frame(iframe)
以上內容為親自測驗,只為解決自學程序中的錯誤點,隨手的記錄
最后,再次宣告來自一個Python小白的自學程序中出現的問題,及時交流與解決,如有不對地方,歡迎指教,不喜勿噴,搬運請注明出處!!!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/278471.html
標籤:python
