需要以下方案的帮助(使用Java):
手动执行此操作:在父页面中填写一些信息后,单击“继续”按钮,
<INPUT TYPE='button' VALUE='Continue' onClick='sendForm()'>
子窗口(UserConfirmationPage)从其父窗口弹出这些信息,单击子页面上的继续按钮,将数据发布到服务器。
<FORM NAME='userConf' ACTION='user.jsp' METHOD='post'>
Do you want to continue?<BR>
<INPUT TYPE='button' VALUE='Continue' onClick='createUser()'>
</FORM>
但是,当我在父页面上使用Selenium Web Driver执行此操作时,
btnContinue.submit()
子页面会弹出父页面上的信息,就像我手动操作时一样,但父级不再存在。使用时
btnContinue.click()
打开空白子页面而不从父页面获取任何信息,它还会抱怨“会话丢失”。
我也尝试过:
JavascriptExecutor jse = (JavascriptExecutor) driver;
jse.executeScript("arguments[0].click();",btnContinue);
和
new Actions(driver).moveToElement(driver.findElement(By.xpath("//input[@value='Continue']"))).click().perform();
但没有任何作用。
看来,Submit()和Click()都不能模拟手动完成的操作。有什么想法吗?
提前多多感谢!
答案 0 :(得分:0)
你没有指定语言,所以我假设你正在使用JAVA:
// since new tab has been opened - need to switch to this tab
// get a list of the currently open windows
Set<String> allTabs = driver.getWindowHandles();
// save the window handle for the current window
String programTab = driver.getWindowHandle();
// switching to the Save tab
String saveTab = ((String) allTabs.toArray()[1]);
driver.switchTo().window(saveTab);
// set timeout
// Click button
driver.findElement(By.id("buttonId")).click();
// set timeout
// switch back to the program tab
driver.switchTo().window(programTab);
答案 1 :(得分:0)
尝试这是最简单,最简单的代码,可帮助您了解父子场景。
public static void main(String[] args) {
WebDriver driver = new FirefoxDriver();
driver.get("http://demo.guru99.com/popup.php");
driver.findElement(By.xpath("html/body/p/a")).click();
// return the parent window name as a String
String parentWindow=driver.getWindowHandle();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
// Pass a window handle to the other window
for(String childWindow: driver.getWindowHandles())
{
System.out.println("child");
//switch to child window
driver.switchTo().window(childWindow);
//find an element and print text of it
WebElement textLabel=driver.findElement(By.xpath("html/body/div[1]/h2"));
System.out.println(" text: "+textLabel.getText());
driver.close();
}
System.out.println("Come to parent window");
//switch to Parent window
driver.switchTo().window(parentWindow);
//find an element and print text of it
WebElement logotext=driver.findElement(By.xpath("html/body/div[1]/h2"));
System.out.println("text: "+logotext.getText());
driver.close();
}