我是 selenium 的新手,正在尝试在 junit 框架中自动化 Web 应用程序。许多人在识别 Web 元素时遇到了一些问题,我也遇到了两个提交按钮具有相同的 xpath 和 css 选择器的问题。
我能观察到的唯一区别是..在两个表单标签中,我可以看到 className 不同(对于第一个表单标签,它是 "feature_space_checkbox"
,对于第二个表单标签,它是“auto_fs_steps_checkbox”
)
因为,我需要识别第二个提交按钮..所以我尝试如下识别第二个提交按钮
driver.findElement(new ByChained(By.className("auto_fs_steps_checkbox"),By.xpath("//*[@id='edit_brochure_2863']/input[3]")));
当我尝试执行此操作时,出现错误
org.openqa.selenium.NoSuchElementException: Cannot locate an element using By.chained({By.className: auto_fs_steps_checkbox,By.xpath: //*[@id='edit_brochure_2863']/input[3]})
谁能纠正我错误的地方
为此场景添加 DOM
<form action="/brochures/2865/feature_space_checked" class="feature_space_checkbox" id="edit_brochure_2865" method="post"><div style="margin:0;padding:0">
<input name="commit" type="submit" value="Submit">
</form>
第二个提交按钮是..
<form action="/brochures/2865/update_auto_fs_steps" class="auto_fs_steps_checkbox" id="edit_brochure_2865" method="post"><div style="margin:0;padding:0">
<input name="commit" type="submit" value="Submit">
</form>
最佳答案
首先,XPath 和 CSS 选择器不是确定的。页面上的每个元素都有许多 XPath 和 CSS,因此说它们具有相同的 Xpath 和 CSS 选择器是不正确的。
对于您的示例,是否需要使用 XPath 或组合两个选择器?
以下 CSS 可以工作;
form.auto_fs_steps_checkbox input
关于java - 即使 xpath 相同,如何识别 Selenium 中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24278998/