我正在用Java学习Selenium。我的用例是:
有两种情况,one
当我直接浏览gmail login page和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版本
答案 0 :(得分:1)
我自己想出了解决方案。尽管这可能会在将来对某人有所帮助。好的,问题是
<a href="SIGN IN Page" target="_blank">
由于新标签页打开,Webdriver需要将控制权从旧标签页转移到新标签页。像这样:
WebElement link = web.findElement(By.linkText("Sign in"));
String l = link.getAttribute("href");
web.get(l);