如何等待硒Web驱动程序中的子窗口
当我点击提交按钮,它会把我带到子窗口,我断言URL,但有时子窗口需要时间来目前使用thread.sleep(4000),但这是错误的方式。
// parent window
String subWindowHandler = null;
Set<String> handles = driver.getWindowHandles(); // get all window
// handles
Iterator<String> iterator = handles.iterator();
while (iterator.hasNext()) {
subWindowHandler = iterator.next();
}
driver.switchTo().window(subWindowHandler); // switch to popup window
System.out.println(driver.getTitle());
String Current_Url = driver.getCurrentUrl();
System.out.println("Current open Url in other Tab -->" + Current_Url);
try {
Assert.assertEquals("http://intelliview-dev.psi.psigroupinc.com/Reports/ReportView.aspx", Current_Url);
logger.info("Assertion Passed");
logger.info("User is able to login to My Account Application");
} catch (AssertionError e) {
logger.info("Assertion Failed");
logger.info("User Provide Invalid Username or Password");
throw e;
}
为此,您需要确保应用程序打开新窗口所需的最大时间(可接受的时间限制)。在此之前,使用获取当前窗口的详细信息
String parent_window = driver.getWindowHandle();
然后等待新窗口使用
new WebDriverWait(driver,AcceptableTimeLimit).until(ExpectedConditions.numberOfWindowsToBe(2));
然后使用切换到新窗口
Set<String> allWindows = driver.getWindowHandles();
Iterator ite=allWindows.iterator();
while(ite.hasNext()){
String popupHandle=ite.next().toString();
if(!popupHandle.contains(parent_window)){
driver.switchTo().window(popupHandle);
//perform your operations on New window
//Then switch back to parent window
driver.switchTo().window(parent_window);
}
}
您可以使用ExpectedConditions.numberOfWindowsToBe
。
单击调用窗口的事件,然后使用下面的代码,然后使用切换另一个窗口
根据您的要求进行计数
new WebDriverWait(driver,30).until(ExpectedConditions.numberOfWindowsToBe(2));
正在研究尝试理解显式等待的方法。 所以单选按钮被点击后,输入形式发生了变化,所以我把给它一个时间元素出现,否则会出错“元素不可见......”。所以我认为现在是理解显式等待的好时机,因为我需要等到元素出现。 但出现错误“Selenium::WebDriver::error::ElementNotVisibleError:Element当前不可见,因此可能无法与之交互”。为什么这段代码不等到元素出现
下面是我为firefox浏览器初始化的selenium web驱动程序。 尽管我给出了隐式等待,但我没有等待元素。它会立即抛出not found异常。如果我放那么它工作正常,没有任何问题。但是把现在测试用例包含更多线程的任何地方。sleep比实际的测试用例代码低。有人能给我建议正确的方法吗?
我在eclipse中使用SeleniumWebDriver和TestNG。问题是页面在某些数据的中途重新登录,并且重新加载的时间是灵活的,这就是为什么我不能应用显式等待时间。我想让webdriver等待,直到重新加载完成。 我正在尝试通过此代码执行此操作……但它不起作用。
根据Selenium WebDriver文档,我们可以将名称或句柄传递给driver.switchTo().window(nameOrHandle);为了获取句柄,我们有getWindowHandle。如何根据窗口名称打开新窗口?如何获取当前窗口名称? / ***将此驱动程序未来命令的焦点切换到具有给定名称/句柄的窗口。* *有关详细信息,请参阅W3C WebDriver规范*。**@param
我的目标是使用硒为Python自动在线账单支付。 使用以下代码使用 Web 驱动程序登录成功: 登录后,一个新的页面加载,我的下一步是点击一个链接。代码: 什么也没发生。没有导航到该法案 但仍然没有。我还应该尝试其他什么? 错误: Traceback(最近调用的最后一次):File"/home/队长/. PyCharmEdu30/config/划痕/scratch_1.py",第12行,在clic
我试图使用SeleniumWebDriverWait类型,在检查元素是否存在之前,等待页面完全加载。我尝试了两种不同的方法。 第一个方法使用IgnoreExceptionTypes,然后在Until方法内调用FindElement。这会立即抛出NoTouchElementException,而无需等待。我希望这会继续尝试查找元素,直到超时,同时忽略NosTouchElementException。