java - 如何点击下一个班级名称?
问题描述
我有<a class="row-title">
最多 21 个 Web 元素的相同类属性。我可以使用 get text 方法获取所有 21 个元素,但我想执行这样的操作。
- 首先我必须点击 XPath
driver.findElement(By.xpath(".//*[@id='menu-posts-presentation']/a/div[3]"));
- 然后我想点击
<a class="row-title">
第一个班级名称 - 第 3 步我也想点击 xpath
driver.findElement(By.xpath(".//*[@id='publish']")).click();
- 然后我必须再次单击第 1 步中的同一个 XPath,然后单击第二个类名而不是第一个,然后再次单击第 3 步中的 XPath
所以我想迭代这个最多 21 个类名。
Test(priority = 2) public void myfsk1(){ driver.findElement(By.xpath(".//*[@id='menu-posts-presentation']/a/div[3]")).click(); List<WebElement> elements = driver.findElements(By.className("row-title")); System.out.println(elements.size()); for (int i=1;i<=elements.size()-1;i++) { System.out.println(elements.get(i).getText()); Reporter.log(elements.get(i).getText()); }
解决方案
请不要忘记添加一些断言来检查它是否真的被点击了,现在这个测试只是点击了一些链接但什么都不检查。此外,您必须添加预期条件以避免单击未加载的元素。
Test(priority = 2)
public void myfsk1 () {
List<WebElement> elements = driver.findElements(By.className("row-title"));
int listSize = elements.size();
System.out.println(listSize);
WebElement innerElement;
for (int i = 1; i < listSize; i++) {
driver.findElement(By.id("menu-posts-presentation"))
.findElement(By.xpath("./a/div[3]"))
.click();
// Search again due to page refresh
elements = driver.findElements(By.className("row-title"));
innerElement = elements.get(i);
System.out.println(innerElement.getText());
Reporter.log(innerElement.getText());
innerElement.click()
driver.findElement(By.id("publish").click;
}
}
推荐阅读
- javascript - 谷歌标签管理器帮助选择标签和触发器
- vert.x - 当 Verticles 被分配给事件循环线程时,那么事件循环在内部的工作是什么?
- javascript - 使用正则表达式表达路由器以匹配多个路径
- c++ - 带有 C++ 控制台程序的 USB 条码扫描器
- javascript - 将两个变量与数值相乘时函数不会返回整数(JS)
- python - 使用python迭代器__next__读取文本,但在读取第一行后停止
- python - python解释器是否隐式使用中国剩余定理?
- amazon-web-services - AWS CDK 是否支持为 AWS Step Functions 指定 ResultSelector?
- python - python “scpy.io.savemat” 将自动嵌套列表
- python - pygame中的屏幕不刷新