[英]scraping content using selenium not working
我正在嘗試使用 selenium 登錄此網站。 所以我導入了網絡驅動程序,為了將登錄信息發送到該頁面,我還導入了密鑰。
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
這是我用來准備硒的,
chromedriver = "chromedriver.exe"
browser = webdriver.Chrome(chromedriver)
browser.get("https://m.adidas.com/us/myaccount-create-or-login")
我讓瀏覽器使用“隱式等待功能”等待頁面加載
網站中的用戶名欄有這樣的HTML內容,
<input type="text" value="" placeholder="* EMAIL" data-placeholder="* Email" maxlength="50" class="textinput required trimspace" name="username" id="username">
對於密碼,它有
<input type="password" placeholder="* PASSWORD" data-placeholder="* Password" maxlength="50" autocomplete="off" name="password" value="" class="textinputpw required" id="password">
我用上面的代碼找到了兩個元素的id,然后我寫了這段代碼來發送個人信息
username1 = browser.find_element_by_id("username")
password1 = browser.find_element_by_id("password")
username1.send_keys(email.get()) # Used a gui entry box so why email.get()
password1.send_keys(password.get())
但是上面的代碼沒有發送信息我不知道為什么會這樣? 你能幫我解決這個問題嗎?
我也嘗試使用 x 路徑發送密鑰。 打印頁面源以檢查網站會產生 403 Access denied 錯誤,但這不是我的情況。
如果有任何問題,我是新手
編輯:- 我的嘗試:
username1 = browser.find_element_by_id("username")
browser.switch_to.frame(username1)
password1 = browser.find_element_by_id("password")
browser.switch_to.frame(password1)
username1.send_keys(email.get()) # Used a gui entry box so why email.get()
password1.send_keys(password.get())
您嘗試訪問的元素位於IFRAME
。
<iframe id="loginaccountframe" class="sso-iframe" src="https://cp.adidas.com/web/eCom/en_US/loadsignin?target=account" frameborder="0" scrolling="no"></iframe>
您需要先切換到 IFRAME,然后才能看到它們。
http://selenium-python.readthedocs.io/navigating.html#moving-between-windows-and-frames
實際上@JeffC是對的,有一個iframe
。 因此,在iframe
查找元素之前,您必須切換該iframe
。
正如您在評論中提到的:-
我試過添加 browser.switch_to.frame(username1)
您實際上是將username1
元素切換為假設錯誤的iframe
元素。
您需要單獨查找iframe
元素作為您嘗試查找的其他元素,然后切換到該 iframe 元素。 但是在這里您可以使用其id
切換到iframe
,如下所示:-
browser.switch_to.frame("loginaccountframe")
#now do your login stuff inside iframe
username1 = browser.find_element_by_id("username")
username1.send_keys(email.get()) # Used a gui entry box so why email.get()
password1 = browser.find_element_by_id("password")
password1.send_keys(password.get())
#now after doing all stuff inside iframe you need to switch back to default content for further steps
browser.switch_to.default_content()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.