如何摆脱无法聚焦元素异常
How to get rid of Cannot focus element exception
我遇到了 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: Message: unknown error: cannot focus element
P.S。在发送文本前添加 field.click()
或使用 ActionChains
未能解决问题。还有 len(text_fields)
return 2
,所以两个元素都与 XPath
正确匹配
第二个表达式将return input
或textarea
的父元素。如果您希望在一个 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')
我遇到了 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: Message: unknown error: cannot focus element
P.S。在发送文本前添加 field.click()
或使用 ActionChains
未能解决问题。还有 len(text_fields)
return 2
,所以两个元素都与 XPath
第二个表达式将return input
或textarea
的父元素。如果您希望在一个 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')