【问题标题】:how to click element when the id,class name is not unique using python seleniumpython - 当id,类名不唯一时如何单击元素使用python selenium
【发布时间】:2020-07-21 00:36:03
【问题描述】:

我想点击这个日常任务链接,但是这里的 id 和 class name 不是唯一的, 我的 DOM 元素是:

我试过了:

#My Restaurant Configuration MENU
  driver.find_element_by_xpath("//a[@class='x-btn name-container x-unselectable x-box-item x-btn-default-small x-noicon x-btn-noicon x-btn-default-small-noicon']//span[contains(text()='My Restaurant Configuration']").click()
  print("second sub link")

出现以下错误:

引发异常类(消息、屏幕、堆栈跟踪) selenium.common.exceptions.InvalidSelectorException:消息:无效选择器:无法使用 xpath 表达式定位元素 //a[@class='x-btn name-container x-unselectable x-box-item x-btn-default- small x-noicon x-btn-noicon x-btn-default-small-noicon']//span[contains(text()='My Restaurant Configuration'] 因为出现以下错误: SyntaxError: 无法在 'Document' 上执行 'evaluate': The string '//a[@class='x-btn name-container x-unselectable x-box-item x-btn-default-small x-noicon x- btn-noicon x-btn-default-small-noicon']//span[contains(text()='Daily Tasks']' 不是有效的 XPath 表达式。 (会话信息:chrome=80.0.3987.163)

【问题讨论】:

    标签: python selenium-webdriver xpath


    【解决方案1】:
    driver.find_element_by_xpath("//span[contains(text(), 'Daily Tasks')]"
    

    也试试这个选项

    driver.find_element_by_id("button-1184-btnInnerEl")
    

    也可以尝试为chrome或opera安装一个名为cropath的扩展,在你还在学习的时候非常有用

    【讨论】:

    • 正如我提到的 id 和类名不是唯一的,所以我不能使用 find_element_by_id。而且这个 xpath 也不起作用
    【解决方案2】:

    试试这个:

      driver.find_element_by_xpath("//a[@class='x-btn name-container x-unselectable x-box-item x-btn-default-small x-noicon x-btn-noicon x-btn-default-small-noicon']//span[contains(text(), 'Daily Tasks')]").click()
    

    【讨论】:

    • raise exception_class(message, screen, stacktrace) selenium.common.exceptions.InvalidSelectorException: Message: invalid selector: The result of the xpath expression "//a[@class='x-btn name-容器 x-unselectable x-box-item x-btn-default-small x-noicon x-btn-noicon x-btn-default-small-noicon']//span/text()[contains(.,'每日任务')]" 是:[对象文本]。它应该是一个元素。
    • @DivyaMani - 查看已编辑的答案并告诉我它是否有效。
    • 请用您的发现更新我的问题。请更正我的代码
    • @DivyaMani 不知道该说什么;这绝对是一个有效的 xpath 表达式。
    猜你喜欢
    • 2021-03-31
    • 1970-01-01
    • 1970-01-01
    • 2017-11-23
    • 2020-02-29
    • 1970-01-01
    • 1970-01-01
    • 2019-10-23
    相关资源
    最近更新 更多