我是Selenium webdriver的新手。我遇到了一个要求,我必须运行我的测试,点击一个部分中的所有链接。有人能帮我用Java代码吗?附加了一个图像,显示了该特定部分的firebug属性。我尝试了下面的代码,但它返回给我一个空列表。
public static void main(String[] args) {
WebDriver driver = new FirefoxDriver();
driver.get("https://dev.www.tycois.com/");
driver.manage().window().maximize();
List<WebElement> allElements = driver.findElements(By.xpath("html/body/div[10]/div/div[1]/div[3]/ul[1]/li[5]"));
System.out.println(allElements);
for (WebElement element: allElements) {
System.out.println(element.getText());
element.click();
}
}
先谢了。
5条答案
按热度按时间a5g8bdjr1#
细节不清楚,但看起来你试图打印页脚的行业部分的链接。如果是这样,这应该工作。
你不能点击这个循环中的链接,因为一旦你点击了第一个链接,你就不在页面上了。我建议你把每个链接的URL存储在一个数组中,然后对每个链接使用
driver.get(url)
。或者你可以把预期的URL存储在一个数组中,然后把链接的URL与预期的URL进行比较,而不必导航。选择权在你...xmjla07d2#
JeffC的解决方案与下面详细介绍的调整一起工作-
上面的另一个答案,我不能发表评论,因为我是新来的网站有
但是,这会遗漏列表中的第一个元素。建议使用的修复方法是-
将导致IndexOutOfBounds异常。
要解决这个问题,只需将迭代器设置为从0而不是1开始
gmxoilav3#
您可以使用像这样的例子:
使用附加到html根的XPath通常是个坏主意,即绝对xpath,您应该始终尝试使用尽可能短的选择器,即相对xpath。
还请记住,如果链接是隐藏的,您需要触发操作,这使他们-像打开菜单的例子。
a9wyjsp74#
你可以试试下面的代码。
只需根据应用程序更改xpath即可。
58wvjzkj5#