java - 循环浏览 Web 元素并单击每个链接

标签 java selenium selenium-webdriver webdriver

嗨,我的代码有效,我的目标是循环遍历表中的每个元素,然后单击该元素,这样我就可以转到下一页,基本上我想这样做

1 click element form drop down
2 //code some stuff
3 Go back 
4 click next element from drop down 
5 code some stuff and etc

我的代码:

List<WebElement> CCTable = driver.findElements(By.id("companyIdBarCompListGrid_rows_scrollpane"));
     for ( WebElement client: CCTable) { 
         System.out.println("\n"+client.getText().substring(0, 20)+"\n");
        client.click();
        Thread.sleep(10000);

    }

enter image description here

我的问题是它在 eclipse ** 的 **控制台中查找并打印出文本,但它没有单击链接或每个链接。

我正在尝试遵循此处的建议 https://sqa.stackexchange.com/questions/12790/how-to-iterate-over-a-collection-of-items-in-selenium-webdriver但没有成功任何帮助将不胜感激。

如果我做错了什么,请帮助我。任何帮助将不胜感激

<小时/>

PP_OBJ_CycleData.CCdropdown(driver).click();

    List<WebElement> CCTable = driver.findElements(By.cssSelector("div#companyIdBarCompListGrid_rows_scrollpane table tbody tr[id*=companyIdBarCompListGrid_] td span div a"));
        // inner 4 loop 
        for ( WebElement ccode: CCTable) { 

             System.out.println("\n"+ccode.getText().substring(0, 20)+"\n");
             System.out.println("Number of links: " + CCTable.size());
             Thread.sleep(3000);

             ccode.click();



Thread.sleep(5000);

driver.findElement(By.xpath("//*[@id='companyIDBarContentPane']//span"));

            }// End Inner 4 loop



    PP_OBJ_CycleData.ReturnToSupport(driver);

这也是在 Eclipse 控制台中:

enter image description here

似乎获取文本没有获取其他公司代码名称。点击第一个名字后,它不再循环,我点击我得到 org.openqa.selenium.StaleElementReferenceException:过时的元素引用:元素未附加到页面文档。

最佳答案

问题是你识别了错误的东西

ID 指向 DIV。并且只有一个 DIV;没有什么可迭代的。虽然 DIV 是可点击的,但点击 DIV 不会执行任何操作。

相反,您需要找到 A 标签。这在表格中可能非常困难;而且所有的 ID 都没有真正的帮助。

基本上你想要一些效果:

List<WebElement> CCTable = driver.findElements(By.cssSelector("div#companyIdBarCompListGrid_rows_scrollpane table tbody tr[id*=companyIdBarCompListGrid_] td span div a");

你可能需要玩一下它。您可以在 List 声明之后添加此行:

System.out.println("Number of links: " + CCTable.size());

当它符合您的期望时,您就找到了正确的 findElements 字符串。

关于java - 循环浏览 Web 元素并单击每个链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49161689/

相关文章:

java - Guice模块测试: require binding of annotated strings

r - 如何在 Rselenium 中释放按键

javascript - 通过javascript模拟键盘事件

java - 如何安装 Jar?

java - 无法读取工件 'org.apache.tiles:tiles-core:jar' 的元数据文件

java - 使用 git 子模块管理 sbt 依赖

java - 如何使用TestNG创建多用户测试场景?

java - 在 Selenium Java 中查找元素的 Xpath

python - 字符串在文本框中输入两次

python-3.x - 从<span>标签元素获取文本