【问题标题】:Python + Selenium: How can click on "onclick" elements?Python + Selenium:如何点击“onclick”元素?
【发布时间】:2018-08-16 16:53:15
【问题描述】:

我的网页中有一个“onclick”元素,其 HTML 内容如下:

<a href="#" onclick="fastener('3625')">Fastener</a>

我想使用 Python + Selenium 使用字符串“fastener”或“Fastener”搜索此元素。数字“3625”会根据之前的输入而改变,因此无法搜索。

我尝试了以下方法,但徒劳无功:

br.find_element_by_css_selector("a[@onlick*='fastener']").click()

请提出执行此操作的方法。谢谢!

P.S.:我使用的是 Python 2.7,带有 Chrome WebDriver 和 Chrome v62。

【问题讨论】:

  • @onlick 是一种 XPath 语法。在 CSS 中你应该使用 a[onlick*='fastener']

标签: python css python-2.7 selenium xpath


【解决方案1】:

使用capybara-py

page.click_link("Fastener")

Capybara 旨在提供此方法和许多其他类似的辅助方法,例如可能需要从最终用户的角度编写验收测试:

page.fill_in("Street", value="123 Main St")
page.select("United States", field="Country")
page.choose("Expedited shipping")
page.click_button("Place order")

【讨论】:

    【解决方案2】:

    使用包含搜索元素

    //a[contains (@onclick='fastener')]
    

       //a[contains(text(),"Fastener")]
    

    【讨论】:

    • 您的建议都出现以下错误:selenium.common.exceptions.InvalidSelectorException: Message: invalid selector: An invalid or illegal selector was specified
    【解决方案3】:

    要以文本为 Fastener 搜索元素,您可以使用以下任一选项:

    • 通过紧固件

      br.find_element_by_link_text("Fastener").click()
      
    • 通过fastener(xpath)使用onclick

      br.find_element_by_xpath("//a[contains(@onclick,'fastener')]").click()
      
    • 通过fastener(css_selector)使用onclick

      br.find_element_by_css_selector("a[onclick^='fastener']").click()
      

    【讨论】:

      【解决方案4】:

      为此使用以下代码:

      br.find_element_by_link_text("Fastener").click()
      

      希望对你有帮助!

      【讨论】:

        猜你喜欢
        • 2022-11-01
        • 2021-02-27
        • 2020-11-24
        • 2020-11-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多