python - 如何摆脱无法聚焦元素异常

标签 python selenium xpath selenium-chromedriver

我在使用 chromedriver 时遇到了以下问题:我有一个文本输入字段和一个 texarea。我可以使用以下代码成功地将文本发送到两个元素

input = driver.find_element_by_xpath('//input[@type="text"]')
input.send_keys('test')
textarea = driver.find_element_by_xpath('//textarea[not(@readonly)]')
textarea.send_keys('test')

但是如果尝试这个代码

text_fields = driver.find_elements_by_xpath('//*[input[@type="text"] or textarea[not(@readonly)]]')
for field in text_fields:
    field.send_keys('test')

我得到selenium.common.exceptions.WebDriverException:消息:未知错误:无法聚焦元素

附注在发送文本之前添加 field.click() 或使用 ActionChains 未能解决问题。另外,len(text_fields) 返回 2,因此两个元素都与 XPath

正确匹配

最佳答案

第二个表达式将返回inputtextarea的父元素。如果您希望在一个 XPath 中同时获取这两个内容,那么:

text_fields = driver.find_elements_by_xpath("//input[@type='text'] | //textarea[not(@readonly)]")
for field in text_fields:
    field.send_keys('test')

或者使用 CSS 选择器:

text_fields = driver.find_elements_by_css_selector("input[type='text'] , textarea:not([readonly])")
for field in text_fields:
    field.send_keys('test')

关于python - 如何摆脱无法聚焦元素异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37204750/

相关文章:

python - 使用 bool 数组掩码,将 False 值替换为 NaN

java - 带有 Java NoSuchElementException 超时的 Selenium WebDriver

php - 在多个 XML 文件中搜索匹配项

ruby - 如何使用 Nokogiri 获取 XML 的第一级子级

python - Ctypes:将返回指针转换为数组或 Python 列表的快速方法

python - numpy.irr 和 Excel IRR 函数的 IRR 结果不同

python - 在 Python 中的模块之间进行日志记录

java - 无法单击 Paypal 按钮继续使用 Selenium

mysql - 如何在selenium中导入.sql文件以便我可以在selenium中执行多个脚本?

dom - 如何在 XPath 中使用 "not"?