【问题标题】:Driver find element with selenium驱动程序找到硒元素
【发布时间】:2017-09-14 14:42:12
【问题描述】:

我正在使用 java 编程。现在,这里是网页代码;

<button class="btn-link" data-sugg-sources="full_name" data-sugg-technik="make_initial_and_name">NG1ulkan</button> 

如果我右键单击并复制 > css 选择器,web 正在给我这个代码;

'.suggestions > ul:nth-child(2) > li:nth-child(1) > button:nth-child(1)'

现在的问题是:如何使用此选择器找到此元素,如何使用 selenium java 进行聚焦和单击? 我也在使用 JavascriptExecutor js = (JavascriptExecutor) 驱动程序;在我的焦点代码中

【问题讨论】:

  • 你不能通过class 找到元素吗?
  • 不,有 5 个不同的按钮,所以我必须根据这个选择器选择 '.suggestions > ul:nth-child(2) > li:nth-child(1) > button:nth-孩子(1)'
  • 欢迎来到 Stack Overflow!请阅读How to AskHow much research effort is expected?请提供您尝试过的代码和执行结果,包括任何错误信息等。

标签: javascript java jquery css selenium


【解决方案1】:

.suggestions &gt; ul:nth-child(2) &gt; li:nth-child(1) &gt; button:nth-child(1) 只不过是cssSelector;它就像 xpath 来定位网页上存在的元素,只是它基于 css 值

正如您所说,您使用的是JavascriptExecutor,因此您可以使用以下代码单击此元素:

  js.executeScript("document.querySelector('.suggestions > ul:nth-child(2) > li:nth-child(1) > button:nth-child(1)').click();");

【讨论】:

    【解决方案2】:

    在 Selenium 的 Java API 中,您将使用 WebDriver.findElementBy.cssSelector

    String selector = ".suggestions > ul:nth-child(2) > li:nth-child(1) > button:nth-child(1)";
    WebElement button = driver.findElement(By.cssSelector(selector));
    

    另见this StackOverflow answer

    【讨论】:

      猜你喜欢
      • 2015-12-27
      • 2023-03-15
      • 2012-01-23
      • 1970-01-01
      • 1970-01-01
      • 2017-02-18
      • 2018-08-15
      • 2019-01-17
      • 2021-08-17
      相关资源
      最近更新 更多