java - 即使 xpath 相同,如何识别 Selenium 中的元素

标签 java html selenium xpath

我是 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/

相关文章:

javascript - 使用 Splinter 查找按钮

linux - 当通过 selenium grid 将 Node Platform 配置为 LINUX 时,OS 在 Selenium Grid Hub 控制台上显示为 Unknown

java - 单击 JList 项如何在 JTabbedPane 中打开新选项卡?

java - 安卓 : AsyncTask onPostExecute is getting null reply

java - 如何回滚android sqlite数据库中已删除的行?

java - 如何减小 jar 的大小

html - 圆圈/圆盘中的中心对齐图标

javascript - 如何在 javascript 中获取最接近的输入类型文本值?

javascript - innerHTML 仅适用于某些功能

selenium - 如何在 Selenium 中找到具有多个类的元素