[英]Python Selenium. Element is not interactable
我正在嘗試填寫表格( https://all-access.wax.io )。 當我使用 Javascript
document.getElementsByName("userName")[0].value = "Hello"
,然后我可以將文本寫入表單。 但是,當我在 selenuim 中使用相同的概念時
driver.find_element_by_name("userName").send_keys("Hello")
,然后我得到:
selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable
當我執行時: self.driver.find_element_by_name("userName")[1].send_keys("Hello")
這會導致:
TypeError: 'WebElement' object is not subscriptable
我也嘗試過等到內容加載完畢,以及使用 XPath 和其他選擇器。 我想我犯了一個簡單的錯誤,但我已經幾個小時無法解決它。
重現問題的代碼:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
browser = webdriver.Chrome()
browser.get('https://all-access.wax.io')
browser.find_element_by_name("userName")[1].send_keys("hello")
print()
browser.find_element_by_xpath("(//input[@name='userName'])[2]").send_keys("hello")
您想將 send_keys 發送到第二個輸入標簽,而不是第一個。
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
browser = webdriver.Chrome()
browser.get('https://all-access.wax.io')
browser.find_element_by_name("userName").send_keys("hello")
print()
您正在使用 find_element 返回一個 webelement 而不是數組,使用 find_elements 或刪除索引
只有name
屬性的方法對我不起作用,因為當您嘗試使用 [1] 訪問時,仍然有兩個元素,因此定位器不是唯一的。 因此,我使用了父pannels visible-desktop-only-flex
class 並添加了顯式等待。
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
browser = webdriver.Chrome(executable_path='/snap/bin/chromium.chromedriver')
browser.get('https://all-access.wax.io')
wait = WebDriverWait(browser, 15)
wait.until(EC.element_to_be_clickable((By.XPATH, "//div[@class='pannels visible-desktop-only-flex']//input[@name='userName']")))
browser.find_element_by_xpath("//div[@class='pannels visible-desktop-only-flex']//input[@name='userName']").send_keys("hello")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.