无法进入谷歌搜索页面,因为在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());
}
}
}
答案 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());
}
}