如何摆脱无法集中的元素异常

时间:2016-05-13 08:15:04

标签: 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: Message: unknown error: cannot focus element

P.S。在发送文本或使用field.click()之前添加ActionChains无法解决问题。此外len(text_fields)返回2,因此这两个元素都与XPath

正确匹配

1 个答案:

答案 0 :(得分:1)

第二个表达式将返回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')