Selenium按钮单击()或提交()?

时间:2017-08-15 21:51:33

标签: selenium selenium-webdriver

需要以下方案的帮助(使用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()都不能模拟手动完成的操作。有什么想法吗?

提前多多感谢!

2 个答案:

答案 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();
}