gpt4 book ai didi

java - WebDriver 打印错误的条件语句

转载 作者:搜寻专家 更新时间:2023-11-01 03:33:24 24 4
gpt4 key购买 nike

我正在学习 WebDriver,只是想检查 demoaut 网站上的链接。循环中的代码应该通过标题识别“Under Construction”页面,打印出第一行,然后返回到基本 url。但由于某种原因,这并没有发生。它到达的第一个“ build 中”链接(特色度假目的地)未被识别,提示打印错误行,然后由于 NoSuchElementException 而不是返回它崩溃,因为它正在寻找错误的链接页。为什么会这样?为什么不根据“正在 build 中”页面的标题进行操作?

import java.util.List;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;

public class CheckLinks {

public static void main(String[] args) {
String baseUrl = "http://newtours.demoaut.com/";
System.setProperty("webdriver.gecko.driver", "C:\\Workspace_e\\geckodriver.exe");
WebDriver driver = new FirefoxDriver();
String underConsTitle = "Under Construction: Mercury Tours";
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

driver.get(baseUrl);
List<WebElement> linkElements = driver.findElements(By.tagName("a"));
String[] linkTexts = new String[linkElements.size()];
int i = 0;

//extract the link texts of each link element
for (WebElement e : linkElements) {
linkTexts[i] = e.getText();
i++;
}

//test each link
for (String t : linkTexts) {
driver.findElement(By.linkText(t)).click();
if (driver.getTitle().equals(underConsTitle)) {
System.out.println("\"" + t + "\""
+ " is under construction.");
} else {
System.out.println("\"" + t + "\""
+ " is working.");
}
driver.navigate().back();
}
driver.quit();
}

}

最佳答案

单击第一个链接后,linkTexts 中的所有引用都将过时...即使您返回该页面也是如此。您需要做的是将所有 href 存储在一个列表中,然后导航到每个 href 并检查页面的标题。

我会这样写...

public class CheckLinks
{
public static void main(String[] args) throws UnsupportedFlavorException, IOException
{
String firefoxDriverPath = "C:\\Users\\Jeff\\Desktop\\branches\\Selenium\\lib\\geckodriver-v0.11.1-win32\\geckodriver.exe";
System.setProperty("webdriver.gecko.driver", firefoxDriverPath);
WebDriver driver = new FirefoxDriver();
driver.manage().window().maximize();

String baseUrl = "http://newtours.demoaut.com/";
driver.get(baseUrl);
List<WebElement> links = driver.findElements(By.tagName("a"));
List<String> hrefs = new ArrayList<>();
for (WebElement link : links)
{
hrefs.add(link.getAttribute("href"));
}
System.out.println(hrefs.size());
String underConsTitle = "Under Construction: Mercury Tours";
for (String href : hrefs)
{
driver.get(href);
System.out.print("\"" + href + "\"");
if (driver.getTitle().equals(underConsTitle))
{
System.out.println(" is under construction.");
}
else
{
System.out.println(" is working.");
}
}
driver.close();
driver.quit();
}
}

关于java - WebDriver 打印错误的条件语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40644507/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com