2016-05-13 73 views
1

我遇到以下问题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

附:在发送文本之前添加field.click()或使用ActionChains未能解决问题。也len(text_fields)返回2,因此两个元件正确地与XPath

回答

0

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

这就是它!非常感谢 – Andersson