我的代码工作我的目标是循环遍历表中的每个元素,然后单击元素,这样我就可以转到下一页,基本上我想这样做
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);
}
我的问题是它在eclipse **中查找并打印出我的**控制台中的文本,但它没有点击链接或每个链接。
我正在尝试按照这里的建议https://sqa.stackexchange.com/questions/12790/how-to-iterate-over-a-collection-of-items-in-selenium-webdriver但是没有成功,任何帮助都会受到赞赏。
如果我做错了什么,请帮助我。任何帮助将不胜感激
PP_OBJ_CycleData.CCdropdown(驱动程序)。单击();
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控制台中:
似乎获取文本没有获得其他公司代码名称。它点击了第一个名字后再没有循环,我点击了 org.openqa.selenium.StaleElementReferenceException:陈旧元素引用:元素未附加到页面文档。
答案 0 :(得分:4)
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字符串。
答案 1 :(得分:1)
这是一个工作循环:
String selector = "div#companyIdBarCompListGrid_rows_scrollpane table tbody tr[id*=companyIdBarCompListGrid_] td span div a";
int links = driver.findElements(By.cssSelector(selector)).size();
System.out.println("Number of links: " + links);
for (int i = 0; i < links; i++) {
List<WebElement> CCTable = driver.findElements(By.cssSelector(selector));
WebElement client = CCTable.get(i);
System.out.println("\n"+client.getText().substring(0, 20)+"\n");
client.click();
// Things happen here
}