2015-04-18 54 views
1

不能進入谷歌搜索頁面,用下面的代碼獲得的org.openqa.selenium.ElementNotVisibleException例外谷歌搜索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()); 
     } 
    } 
} 

回答

0

以下是3個問題:

),用於搜索框中選擇器是一個div元素,而不是一個適當的文本框或輸入標記因此例外org.openqa.selenium.ElementNotVisibleException

,你想輸入文本,因此使用下面的選擇

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

)的另一件事是您不使用任何等待,一個隱含的等待可以在這裏保存你的那一天。

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

)當你通過他們的參考循環到列表中的項目之前獲得通過錨標記的元素列表會過時,因此你可以在每次得到一個新的參考刷新元素參考循環。

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(); 
     } 
    } 
0

只要給適當的鏈接,在driver.get(

driver.get("https://www.google.co.in/"); 
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()); 
    } 
}