簡體   English   中英

Python selenium ElementNotInteractableException:消息:元素不可交互

[英]Python selenium ElementNotInteractableException: Message: element not interactable

我正在嘗試登錄 beeradvocate.com 以抓取(抓取)一些啤酒數據。 我嘗試使用 selenium 但一直失敗。

這是 html

<input type="text" name="login" value="" id="ctrl_pageLogin_login" class="textCtrl" tabindex="1" autofocus="autofocus" style="background-image: url(&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR4nGP6zwAAAgcBApocMXEAAAAASUVORK5CYII=&quot;); cursor: auto;">

我嘗試使用名稱和值以及 class 但一切都失敗了。 我嘗試了 Xpath 作為我的最后一次嘗試,但也失敗了。

網站和檢查

我的代碼:

driver=webdriver.Chrome("~~~~\\chromedriver.exe")
driver.get("https://www.beeradvocate.com/community/login/")

from selenium.common.exceptions import TimeoutException

driver.maximize_window()

    while True:
        try: 
            WebDriverWait(driver, 30).until(EC.element_to_be_clickable((By.XPATH,'//*[@id="ctrl_pageLogin_login"]'))).send_keys("scentmaster")
            break
        except TimeoutException: 
            print("too much time")

我已經使按鈕與:

button = driver.find_element_by_xpath('//*[@id="pageLogin"]/dl[3]/dd/input')
driver.execute_script("arguments[0].click();", button)

但是,我需要能夠執行 sent_keys 以輸入 id 和 pw 以登錄...有人知道嗎?

要輸入用戶名,試試這個 xpath:

'//form/dl/dd/input[@id="ctrl_pageLogin_login"]'

密碼:

'//form/dl/dd/input[@id="ctrl_pageLogin_password"]'

如果您使用 xpath //*[@id = "ctrl_pageLogin_login"] ,頁面上有 2 個字段,您指的input字段是第二個。 可悲的是,selenium find element默認指的是第一個。 如果您這樣做,它將起作用: (//*[@id = "ctrl_pageLogin_login"])[2]

但我有另一個建議,嘗試通過 css 選擇器使用以下值定位元素: form#pageLogin input#ctrl_pageLogin_login

WebDriverWait(driver, 30).until(EC.element_to_be_clickable((By.CSS_SELECTOR,'form#pageLogin input#ctrl_pageLogin_login'))).send_keys("scentmaster")

#for password
driver.find_element_by_css_selector('form#pageLogin input#ctrl_pageLogin_password').send_keys('your_password')

#for submit
driver.find_element_by_css_selector('form#pageLogin input[type=submit]').click()
WebDriverWait(driver, 30).until(EC.element_to_be_clickable((By.CSS_SELECTOR,'form#pageLogin input#ctrl_pageLogin_login'))).send_keys("scentmaster")

#for password
driver.find_element_by_css_selector('form#pageLogin input#ctrl_pageLogin_password').send_keys('your_password')

#for submit
driver.find_element_by_css_selector('form#pageLogin input[type=submit]').click()

frianH 給出的上述解決方案有效::)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM