【问题标题】:Python + Selenium find_element_by_xpath returns dictPython + Selenium find_element_by_xpath 返回字典
【发布时间】:2021-03-08 01:40:50
【问题描述】:

-版本- 蟒蛇:3.6.8 硒:3.141.0

我试试这个。

total_page = driver.find_element_by_xpath('Valid X Path').text
print(total_page)

但是,

AttributeError : "dict' 对象没有属性 'text'

我知道.... find_element~ 函数返回 Dict 类型,而不是 WebElement。

可能出了什么问题?

【问题讨论】:

    标签: python-3.x selenium findelement


    【解决方案1】:

    我在使用 Chromedriver 时也遇到了同样的问题。我目前使用的解决方法是使用另一个驱动程序(在这种情况下,Firefox 适合我)。

    编辑:我尝试卸载并重新安装最新的 chromedriver,这似乎也解决了我的问题。

    【讨论】:

    • 这就是答案。使用最新的 chromedriver 解决了这个问题。 @bk-lim
    【解决方案2】:

    尽量避免使用

    total_page = driver.find_element_by_xpath('Valid X Path').text
    

    并改变新的方式,因为将来会弃用:

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    
    driver = webdriver.Chrome()
    el = driver.find_element(By.XPATH, "valid_xpath")
    print(el.text)
    

    无论如何,我看到了问题,但没有为我复制......

    【讨论】:

      【解决方案3】:

      此错误消息...

      AttributeError : "dict' object has no attribute 'text'
      

      ...暗示 find_element_by_xpath() 正在返回一个 dict 类型的对象,这有点出乎意料,并且您的代码中某处有问题。 p>


      深入研究

      最近在某些用例中开始出现此错误:

      其中@titusfortner mentions find_element() 正在返回元素的JSON Wire Protocol 签名,而不是来自驱动程序的w3c 响应

      可以通过将w3c 设置为False 来重现此问题,如下所示:

      options.add_experimental_option('w3c', False)
      

      建议

      在这种情况下,建议:

      • 根本不设置 w3c 并按照默认配置进行。
      • 不要使用desired_capabilities
      • 避免绕过sandbox security,除非您有特定的用例可以这样做。

      但是,同样重要的是要确保:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-07
        • 2020-05-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多