self.driver = webdriver.Chrome(options=self.chrome_options, executable_path='chromedriver.exe')
self.driver.implicitly_wait(5)
self.driver.get("website")
self.driver.switch_to.frame(self.driver.find_element_by_tag_name("iframe"))
self.driver.find_element_by_class_name("mylivechat_collapsed").click()
self.driver.find_element_by_xpath("//input[@placeholder='Name'").send_keys(self.names)
self.driver.find_element_by_xpath("//input[@placeholder='Email']").send_keys(self.email)
self.driver.find_element_by_xpath("//textarea[@placeholder='Type your message']").send_keys(self.message)
嗨,
我正在尝试在3个输入框中输入文本。 Selenium设法找到3个框,但是当我尝试使用selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable
方法时,它由于某种原因返回了错误(send_keys()
)。文本框可见且可点击。
我尝试使用WebDriverWait
(以及其他等待,例如times.sleep
和driver.implicitly-wait()
)和ActionChains
,但它们不起作用。
我该如何解决? 非常感谢您的帮助:)
答案 0 :(得分:0)
让我们尝试一起调试它:
您确定在分配时设置了变量,即self.name等吗?
您是否正在使用可以帮助您调试并可以使用断点的IDE,以便逐步执行代码?因为如果没有,我会尝试将您的问题隔离为仅设置静态值,例如不要同时从类变量中获取值。 在您的情况下,请使用:
self.driver.find_element_by_xpath(element_path_here).send_keys(“简·多伊”)
如果您可以控制源代码,请尝试将ID添加到元素中(假定ID是唯一的),并使用.find_element_by_id选择器代替xpath。如果您不能输入ID,请尝试(至少出于调试目的)使用full_xpath。通常尝试避免使用full_xpath ,因为它很容易与最小的网页结构更改不同步,但是对于调试-这是一个很好的资源)。