谷歌搜索中的org.openqa.selenium.ElementNotVisibleException

时间:2015-04-18 08:54:41

标签: java selenium-webdriver automated-tests

无法进入谷歌搜索页面,因为在Google搜索中获得org.openqa.selenium.ElementNotVisibleException的例外

使用以下代码:

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import java.util.List;

public class GoogleTest {
    public static void main(String[] args) {

        // TODO Auto-generated method stub
        WebDriver driver = new FirefoxDriver();
        driver.get("google.co.in/");
        driver.manage().window().maximize(); driver.findElement(By.xpath("//*[@id='sb_ifc0']")).sendKeys("selenium");
        driver.findElement(By.xpath("//*[@id='sblsbb']/button")).click();
        List<WebElement> allLinks = driver.findElements(By.tagName("a"));
        System.out.println(allLinks.size());

        for(int i=0;i<allLinks.size();i++)
        {
            System.out.println(allLinks.get(i).getText()+"----"+allLinks.get(i).isDisplayed());
        }
    }
}

3 个答案:

答案 0 :(得分:0)

以下是3个问题:

1 )搜索框的选择器是div元素,而不是正确的文本框或输入标记,因此例外org.openqa.selenium.ElementNotVisibleException

因为您希望输入文本,因此请使用以下选择器

//*[@id = 'sb_ifc0']//input[@id = 'lst-ib']

2 )另一件事是你没有使用任何等待,隐含的等待可以为你节省一天。

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

3 )当您在循环浏览之前通过锚标记获取元素列表时,对列表项的引用将过时,因此您可以通过每次获取新引用来刷新元素引用在循环中。

  for(int i=0; i<allLinks.size(); i++)
  {
       List<WebElement> allLink = driver.findElements(By.tagName("a"));
       System.out.println(allLink.get(i).getText()+"----"+allLink.get(i).isDisplayed());
  }

以下代码问题代码的工作版本:

    /**
     * Created by anirudh on 18/4/15.
     */
    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.firefox.FirefoxDriver;
    import java.util.List;
    import java.util.concurrent.TimeUnit;

    public class GoogleTest {
        public static void main(String[] args) {

            // TODO Auto-generated method stub
            WebDriver driver = new FirefoxDriver();
            driver.manage().window().maximize();
            driver.get("https://www.google.co.in/");
            driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
            driver.findElement(By.xpath("//*[@id = 'sb_ifc0']//input[@id = 'lst-ib']")).sendKeys("selenium");
            driver.findElement(By.xpath("//*[@id = 'sblsbb']/button")).click();
            List<WebElement> allLinks = driver.findElements(By.tagName("a"));
            System.out.println(allLinks.size());

            for(int i = 0; i<allLinks.size(); i++)
            {
                List<WebElement> allLink = driver.findElements(By.tagName("a"));
                System.out.println(allLink.get(i).getText()+"----"+allLink.get(i).isDisplayed());
            }
            driver.quit();
        }
    }

答案 1 :(得分:0)

在driver.get()

中输入正确的链接
 driver.get("https://www.google.co.in/");

答案 2 :(得分:0)

Just try below code for searching in google

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import java.util.List;

public class Googlesearch {
    public static void main(String[] args) {

        // TODO Auto-generated method stub
        WebDriver driver = new FirefoxDriver();
        driver.get("https://www.google.co.in/");
        driver.manage().window().maximize(); 
        driver.findElement(By.name("q")).sendKeys("selenium");
       driver.findElement(By.xpath("//*[@id='sblsbb']/button")).click();
       List<WebElement> elements = driver.findElements(By.tagName("a"));
        System.out.println(elements.size());
    }
}