我正在用java学习硒。我的用例是:
- 浏览www.google.com
- 搜索" Gmail登录"
- 打开第一个链接
- 单击"签名"按钮(这需要我登录页面(
- 输入电子邮件,单击下一步输入密码
- 单击下一个
有两种情况,one
当我直接浏览Gmail登录页面和skip (1,2,3 points )
时,它对我有用。我可以登录,但是使用2nd
从第一步开始时,它会投掷
Exception in thread "main" org.openqa.selenium.WebDriverException: java.net.SocketTimeoutException: timeout
在第5点(需要输入电子邮件时(
这是我的总体代码:
WebDriver web;
public void invokeChrome()
{
System.setProperty("webdriver.chrome.driver", "D:\software testing\chromedriver.exe");
web = new ChromeDriver();
web.manage().window().maximize();
web.manage().deleteAllCookies();
web.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
web.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);
web.get("https://www.google.com");
}
void searchQuery() throws InterruptedException
{
web.findElement(By.name("q")).sendKeys("Gmail Login");
Thread.sleep(2000);
web.findElement(By.xpath("//div[@class='sbl1']")).click();
web.findElement(By.xpath("//h3[@class='LC20lb']")).click();
web.findElement(By.linkText("Sign in")).click();
Thread.sleep(2000);
web.findElement(By.xpath("//input[@type='email']")).sendKeys("xyz@gmail.com");
web.findElement(By.xpath("//span[@class='RveJvd snByac']")).click();
web.findElement(By.cssSelector(".A3sRAb.YKooDc .zHQkBf, .A3sRAb.YKooDc .MQL3Ob")).sendKeys("*****@");
Thread.sleep(2000);
web.findElement(By.xpath("//span[contains(text(), 'Next')]")).click();
}
我正在使用Chromedrive 74和硒:3.9.0版本
我自己想出了解决方案。虽然可能会在将来对某人有所帮助。好的,问题是
<a href="SIGN IN Page" target="_blank">
因为新选项卡打开时,WebDriver需要将控件从旧选项卡转换为新标签。这样:
WebElement link = web.findElement(By.linkText("Sign in"));
String l = link.getAttribute("href");
web.get(l);