在selenium中查找没有id的提交按钮

问题描述 投票:0回答:4

我有一个按钮

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

我无法通过 ID 或姓名找到它,需要提交表格。

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

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

想法?

python selenium
4个回答
58
投票

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

如果类本身是唯一的,您可以使用

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()

如果这些都不起作用(即它们不能唯一地标识按钮),请查看按钮上方的元素(例如

<form
)并提供以下格式的 xpath:

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

3
投票

我推荐 xpath chrome 扩展,有了它,您将能够通过运行扩展并按住 Shift 键单击您想要此 chrome 扩展的元素来获取路径https://chrome.google.com/webstore/detail/xpath-帮助者/hgimnogjllphhhkhlmebbmlgjoejdpjl


1
投票

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


0
投票

在撰写本文时,这对我有用......

let submit = await driver.findElement(By.css("[type='submit']"));
await submit.click();

运气。

© www.soinside.com 2019 - 2024. All rights reserved.