【问题标题】:how to select a link from many button with same text one by one如何从具有相同文本的多个按钮中一一选择链接
【发布时间】:2017-09-12 05:22:10
【问题描述】:

有许多按钮具有相同的文本,我需要在使用 while 循环时一个一个地单击它,它从第一个、第二个、第三个开始,然后继续。

while(true) {
  driver.findElement(By.xpath("(//button[text()='Follow'])[1]")).click();
 }

有什么方法可以在每次执行循环时将 [1] 更改为 [2] 为 [3],这样我就可以继续点击更高的数字等等

【问题讨论】:

  • int i= 0; while(i
  • 你介意向我解释一下 [" + (++i) + "] 的功能是什么,它每次创建循环时都会加 1
  • 是的,它在 while 循环的每次迭代中将 i 的值增加 1

标签: java selenium automation selenium-chromedriver


【解决方案1】:

使用您当前的方法,您没有退出while 循环的策略。可能更简单的方法是抓取与该定位器匹配的所有链接,然后循环单击每个链接。

List<WebElement> links = driver.findElements(By.xpath("(//button[text()='Follow'])"));
for (WebElement link : links)
{
    link.click();
}

【讨论】:

  • 好吧,我不需要退出循环,我只需关闭程序,这实际上是 instagram 中的跟随按钮,所有链接都不存在,直到您到达按钮末尾并且页面将往下走,会有一些新的按钮。你的策略不会点击其余未显示的按钮
  • 嗯,你没有在你的问题中提到任何这些,所以没有一个问题得到解决。简单的方法是在运行我的答案中的代码之前向下滚动到页面底部。如何向下滚动将是之前在 SO 上讨论过的另一个问题。你可以谷歌找到答案。
  • 当页面几乎到达底部的关注按钮时,页面将自动向下滚动,我不需要滚动我只需要在 ("(//button[text()='Follow' ])[1]")) 每次循环执行时一一执行。你知道怎么做吗?
  • 您需要花一些时间在谷歌上搜索。您正在询问如何在循环中将变量增加 1。这几乎是任何语言编程最基本的事情之一。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-11
  • 2022-08-17
相关资源
最近更新 更多