【问题标题】:find submit button in selenium without id在没有id的硒中找到提交按钮
【发布时间】:2016-06-02 13:07:40
【问题描述】:

我有一个按钮

<input type="submit" class="button button_main" style="margin-left: 1.5rem;" value="something">

我无法通过 id 或 name 找到它,需要提交表单。

我试过这样做: 或者,WebDriver 对每个元素都有便捷的方法“提交”。如果你在表单中的一个元素上调用它,WebDriver 将遍历 DOM,直到它找到封闭的表单,然后调用它的提交。如果元素不在表单中,则会引发 NoSuchElementException: element.submit() http://selenium-python.readthedocs.org/navigating.html

但这也找不到提交选择器。

想法?

【问题讨论】:

  • 是 iframe 中的表单吗?

标签: python selenium


【解决方案1】:

这里有很多选项,仅举几例:

如果类单独是唯一的,你可以使用

driver.find_element_by_css_selector(".button_main").click()

如果类+值组合是唯一的,您可以使用:

driver.find_element_by_css_selector(".button_main[value='something']").click()

你也可以使用xpath:

driver.find_element_by_xpath("//input[@type='submit' and @value='something']").click()

如果这些都不起作用(即它们不能唯一标识按钮),请查看按钮上方的元素(例如 &lt;form)并提供格式的 xpath:

driver.find_element_by_xpath("//unique_parent//input[@type="submit" and @value='something']").click()

【讨论】:

    【解决方案2】:

    我推荐 xpath chrome 扩展,使用它,您将能够通过运行扩展并按住 shift 单击您想要此 chrome 扩展的元素来获取路径https://chrome.google.com/webstore/detail/xpath-helper/hgimnogjllphhhkhlmebbmlgjoejdpjl

    【讨论】:

    • 你不需要扩展,只需打开开发者工具并选择一个元素,然后右键单击 > 复制 > xpath。要通过 xpath 搜索,只需使用 ctrl + f 或 cmd + f
    • 我不建议使用这种方法:开发人员工具(和其他一些工具)提供的 xpath 建议不是与 Selenium 一起使用的好 xpath。它们生成绝对 xpath,而使用相对 xpath 要好得多(绝对 xpath 比相对 xpath 更容易破坏;它也更难阅读,语义上可能不清楚)。所以你可以使用这个生成的 xpath 作为基础,但不能作为实际值。
    【解决方案3】:

    您可以尝试使用 XPath 表达式或 CSS 选择器(如 input[type="button"])查找元素,然后单击该元素。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多