【问题标题】:How to get rid of Cannot focus element exception如何摆脱无法聚焦元素异常
【发布时间】:2016-05-13 08:15:03
【问题描述】:

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 正确匹配

【问题讨论】:

    标签: python selenium xpath selenium-chromedriver


    【解决方案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')
    

    【讨论】:

    • 就是这样!非常感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-27
    • 1970-01-01
    • 2014-05-08
    • 2023-04-05
    相关资源
    最近更新 更多