无法使用java

时间:2017-02-16 15:43:32

标签: java selenium selenium-webdriver

我的代码

WebDriver driver = new FirefoxDriver();
driver.get("https://google.com");
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
driver.findElement(By.name("q")).sendKeys("selenium");
driver.findElement(By.xpath("//button[@value='Search']")).click();

List<WebElement> alllinks = driver.findElements(By.xpath("//div[3][@class='_NId']/div/div/div/h3"));

for(WebElement cl:alllinks)
{
    System.out.println(cl.getText());

    if(cl.getText()!="")
    {
        cl.click();
    }

}

通过上面的代码,我没有得到任何例外,但我也无法点击网页上的任何链接,我只想逐个点击每个链接。请告诉我解决方案如何做到这一点,谢谢提前。

1 个答案:

答案 0 :(得分:0)

您打开所有链接的假设是正确的,但代码无法显示所需的输出

1&GT;当针对“Selenium”关键字显示Google搜索结果时,您可以在那里找到许多链接。因此,如果您手动点击每个链接 - 它会在同一个标​​签中打开,通过该标签,其他链接将无法访问,因为WebDriver会为您提供org.openqa.selenium.StaleElementReferenceException:例外。

现在试试这段代码:

        open some driver
        driver.get("https://google.com");
        driver.manage().window().maximize();
        driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
        driver.findElement(By.name("q")).sendKeys("selenium");
        driver.findElement(By.xpath("//button[@value='Search']")).click();

        List<WebElement> alllinks = driver.findElements(By.xpath("//div[3][@class='_NId']/div/div/div/h3"));

        for(WebElement cl:alllinks)
        {
            System.out.println(cl.getText());
            if(cl.getText()!="")
            {
                Actions action = new Actions(driver); // I have added these lines
                action.keyDown(Keys.CONTROL).moveToElement(cl).click().perform();
                action.keyUp(Keys.CONTROL).perform();
            }
         }

所以现在所有链接都会在新标签页中打开,然后就可以了。