场景是,当我单击它时有一个按钮,此弹出窗口作为附件图像打开。我应该在其中填充数据,然后单击提交按钮。 我无法使用以下代码切换到此弹出窗口:
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
任何帮助将不胜感激。
答案 0 :(得分:0)
根据我的经验,到达“新” Windowhandle需要花费几毫秒。在Firefox中,这对我有效:
public void goto2 () throws InterruptedException {
Thread.sleep(100);
ArrayList<String> winHandles = new ArrayList<String> (driver.getWindowHandles());
Thread.sleep(100);
driver.switchTo().window(winHandles.get(1));
}
在Chrome中,您甚至不需要切换,驱动程序可以自行完成工作。至少在新的标签页和窗口中,不确定是否也在框架上。
如果您想尝试使用Chrome,请执行我的设置:
System.setProperty("webdriver.chrome.driver", "C:\\Users\\pburgr\\Desktop\\chromedriver\\chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.addArguments("user-data-dir=C:\\Users\\pburgr\\AppData\\Local\\Google\\Chrome\\User Data");
driver = new ChromeDriver(options);
driver.manage().window().maximize();
它包括现有的Chrome配置文件,因此您可以使用扩展程序,缓存等。只需编辑exe和配置文件文件夹的路径即可。
答案 1 :(得分:0)
您可以在启动浏览器后尝试使用以下代码:
由于没有窗口/警报,因此无需切换。
打开的弹出窗口只是 Div 。
driver.manage().window().maximize();
driver.get("http://41.33.122.55:3333/users/login");
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.elementToBeClickable(By.id("username"))).sendKeys("alaatest");
wait.until(ExpectedConditions.elementToBeClickable(By.id("password"))).sendKeys("QWERTY123");
WebElement loginButton = wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector("button.btn.btn-white-rounded.login-btn")));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", loginButton);
WebElement creaetAccount = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//a[text()='Add new Account']")));
executor.executeScript("arguments[0].click();", creaetAccount);
wait.until(ExpectedConditions.elementToBeClickable(By.name("firstName"))).sendKeys("Ali");
答案 2 :(得分:0)
用于登录并到达模式窗口中的firstName字段的完整代码。我相信其余的一切由您自己管理。
<select name="" id="">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<div id="div">hi</div>