【问题标题】:Click on particular instance for a button using CSS selector使用 CSS 选择器单击按钮的特定实例
【发布时间】:2020-11-13 14:44:55
【问题描述】:

我有一个有多个提交按钮的网页。我想遍历它们并一个一个地点击它们。

我知道我可以像这样通过 xpath (//button[@class='submit'])[i](其中 i = 循环编号)来做到这一点。

但我想知道是否可以通过 CSS 选择器来实现?

我试过button.submit,但它总是会点击第一个按钮,我希望能够循环播放。我也试过button.submit:first-child,但它似乎做同样的事情。

下面的和HTML差不多。

<div>
    <button class="submit" type="button"></button>
</div>
<div>
    <button class="submit" type="button"></button>
</div>
<div>
    <button class="submit" type="button"></button>
</div>

【问题讨论】:

  • 你尝试loop() 能够循环播放吗?
  • 循环不是问题。我的元素需要 css 选择器。

标签: java html css selenium css-selectors


【解决方案1】:

是的,你可以这样做:

如果您使用的是低于 8 的 Java 版本,请这样做:

List<WebElement> elements = driver.findElements(By.cssSelector("button.submit"));

WebElement confirm = driver.findElement(By.cssSelector("selector_for_confirm"));

for(WebElement element: elements){
     element.click();
     confirm.click();
}

如果你使用的是 Java 8 或更高版本,你可以这样尝试:

List<WebElement> elements = driver.findElements(By.cssSelector("button.submit"));

WebElement confirm = driver.findElement(By.cssSelector("selector_for_confirm"));

  elements.forEach(e->{
        e.click();
        confirm.click();
    });

【讨论】:

  • 如果我理解正确,这将一个接一个地点击每个元素。但是,如果单击每个按钮后有一个确认模式,您必须单击确认?例如,您首先单击提交,然后单击确认每个。
猜你喜欢
  • 1970-01-01
  • 2013-01-05
  • 1970-01-01
  • 1970-01-01
  • 2020-06-17
  • 2019-05-25
  • 1970-01-01
  • 1970-01-01
  • 2017-05-24
相关资源
最近更新 更多