Java WebDriver脚本,用于单击除一个特定名称无效的链接之外的所有链接

Java WebDriver脚本,用于单击除一个特定名称无效的链接之外的所有链接,java,selenium,for-loop,webdriver,Java,Selenium,For Loop,Webdriver,我正在学习使用Java/Junit和IntelliJ IDEA的Selenium WebDriver 2 我用于创建脚本的示例页面是 我正在尝试创建一个脚本,它将单击页面上除“支持”链接之外的所有链接 我已经导入了所有必要的库和 下面是我尝试使用的代码,但它给出了一个错误: public class AllLinksExceptSupport{ WebDriver driver= new FirefoxDriver(); String url="http://newtours.demoaut.

我正在学习使用Java/Junit和IntelliJ IDEA的Selenium WebDriver 2

我用于创建脚本的示例页面是

我正在尝试创建一个脚本,它将单击页面上除“支持”链接之外的所有链接

我已经导入了所有必要的库和

下面是我尝试使用的代码,但它给出了一个错误:

public class AllLinksExceptSupport{

WebDriver driver= new FirefoxDriver();
String url="http://newtours.demoaut.com/";

@Before
public void loadhomepage()
{
driver.get(url);

@Test
public void allexceptregister(){
   List<WebElement> alllinks = driver.findElements(By.tagName("a"));
for (int i =0; i<= alllinks.size()-1; i++){
    String oflinks = alllinks.get(i).getText();
    if(oflinks.equals("SUPPORT")){
      continue;
    }
     alllinks.get(i).click();
}
}
}
公共类AllLinksCeptSupport{
WebDriver=newfirefoxdriver();
字符串url=”http://newtours.demoaut.com/";
@以前
公共网页()
{
获取(url);
@试验
公共无效allexceptregister(){
列出所有链接=driver.findElements(按.tagName(“a”));

对于(int i=0;i您遇到的问题是,当您单击链接时,您将离开页面。这会使列表中的元素集合“过时”

这是一种适合您的方法。当然,这假设所有链接都有不同的链接文本

List<WebElement> allLinks = driver.findElements(By.tagName("a"));
String ofLinks[] = new String[allLinks.size()];
for (int i = 0; i < allLinks.size(); i++){
    if(!allLinks.get(i).getText().equals("SUPPORT")){
       ofLinks[i] = allLinks.get(i).getText();
    }
}

for (int i = 0; i < allLinks.size(); i++){
    if (ofLinks[i] != null){
        driver.findElement(By.LinkText(ofLinks[i])).click();
    }
    driver.findElement(By.linkText("Home")).click();
}
List allLinks=driver.findElements(按.tagName(“a”));
链接字符串[]=新字符串[allLinks.size()];
对于(int i=0;i
Hi Richard,谢谢你的回答。当我运行你给我的脚本时,控制台继续给我一个错误:org.openqa.selenium.NoSuchElementException:找不到元素:{“方法”:“链接文本”,“选择器”:“你的目的地”}。另外,我可以问一下,哪一行将我返回到原始页面?NoTouchElement表示它在页面中找不到元素。StaleElement表示它在页面上找到了元素,但再也找不到。感谢您的帮助,但它仍然打开了应该跳过的页面。我相信我所做的更正对y有用现在,很抱歉。谢谢!在代码中的链接字符串后面添加方括号后,这就起作用了,所以看起来像是链接字符串[]=新字符串[allLinks.size()];