java - 我尝试使用 selenium 和 java 通过谷歌应用程序自动注册。它的注册,但我在控制台中遇到了一些错误
问题描述
我是硒自动化测试的初学者。我尝试通过谷歌应用程序自动注册,注册后它的注册重定向到 deshboard,但我在控制台中遇到了一些错误。
driver.findElement(By.cssSelector("a.btn.btn-circle.btn-sm.btn-google.mr-2")).click();
WebDriverWait wait = new WebDriverWait(driver,50);
wait.until(ExpectedConditions.numberOfWindowsToBe(2));
Set<String> s1 = driver.getWindowHandles();
Iterator<String> i1 = s1.iterator();
while(i1.hasNext())
{
String next_tab = i1.next();
if (!parentWindow.equalsIgnoreCase(next_tab))
{
driver.switchTo().window(next_tab);
WebDriverWait wait2 = new WebDriverWait(driver, 20);
wait2.until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@id='identifierId']"))).sendKeys("netcse02@gmail.com");
driver.findElement(By.id("identifierNext")).click();
new WebDriverWait(driver, 10).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@name='password']"))).sendKeys("*******");
driver.findElement(By.id("passwordNext")).click();
wait.until(ExpectedConditions.titleContains("Unify | Dashboard"));
System.out.println(driver.getTitle());
Thread.sleep(5000);
}
}
注册谷歌应用程序:
没有这样的窗口:窗口已经关闭:
解决方案
这是我在自动化框架中使用的两种通用方法。
public void waitForNewWindowAndSwitchToIt(WebDriver driver) {
String cHandle = driver.getWindowHandle();
String newWindowHandle = null;
Set<String> allWindowHandles = driver.getWindowHandles();
// Wait for 20 seconds for the new window and throw exception if not found
for (int i = 0; i < 20; i++) {
if (allWindowHandles.size() > 1) {
for (String allHandlers : allWindowHandles) {
if (!allHandlers.equals(cHandle))
newWindowHandle = allHandlers;
}
driver.switchTo().window(newWindowHandle);
break;
} else {
}
}
if (cHandle == newWindowHandle) {
throw new RuntimeException("Time out - No window found");
}
}
public boolean closeAllOtherWindows(WebDriver driver, String openWindowHandle) {
Set<String> allWindowHandles = driver.getWindowHandles();
for (String currentWindowHandle : allWindowHandles) {
if (!currentWindowHandle.equals(openWindowHandle)) {
driver.switchTo().window(currentWindowHandle);
driver.close();
}
}
driver.switchTo().window(openWindowHandle);
if (driver.getWindowHandles().size() == 1)
return true;
else
return false;
}
推荐阅读
- fortran - 逻辑运算符 '.or.' 的操作数 在(!)是逻辑(4)/字符(1)
- matlab - 嵌套结构的动态字段引用
- android - 更改 Android 别名会产生“应用程序已停止工作”错误,即使它在 Android API 25 的模拟器中正确更改它
- vba - 让程序也通过所有幻灯片
- php - 解析 UTF8 文本时出现问题的反斜杠
- c++ - 类模板中没有默认 lambda 的可能性
- python - 在 Windows 中使用 antiword 读取 Python 中的 .doc 文件(也是 .docx)
- asp.net - 在 IIS 上发布 ASP.NET MVC 应用程序
- git - 在 TFS 中撤消冲突的拉取请求
- php - php - 在外部页面上使用会话的变量