js框,就是JavaScript中的警告框(alert),确认框(confirm),提示框(prompt),他们都是模态窗口。什么是模态窗口,大家可以自行百度一下,简单说就是弹出的窗口是在最顶端的,你点击文档,无法切换到文档,它总是在最顶端,最先接受用户的响应,而且这种框同时只能存在一个。这有点像播放器的当播放时总在最前一样。
Selenium中对js框的操作非常简单,js框在Selenium中被抽象成Alert对象,只有四个方法:
void accept() :点击“确定”按钮
void dismiss()
:点击“取消”按钮
Stirng getText()
:获得窗口的提示信息
void sendKeys(String keysToSend)
:在提示框中输入文档
在操作这些框前,当然需要先切换到他们,所以还需知道一个方法:
Alert switchTo().alert() :切换到js框,并且返回一个Alert对象
我们将通过讲解最复杂的提示框来说明Alert对象的用法。
首先,我们在html文件夹中,增加一个html文件,jsWin.html,其中的代码是这样的
<!DOCTYPE html> <html> <head> <meta> <title></title> </head> <body> <p>点击按钮查看输入的对话框。</p> <button id="button1" onclick="myFunction()">点我</button> <p id="demo"></p> <script> function myFunction(){ var x; var person=prompt("请输入你的名字",""); if (person!=null && person!=""){ x="你好 " + person + "! 今天感觉如何?"; document.getElementById("demo").innerHTML=x; } } </script> </body> </html>
我们要进行的操作是,点击页面上的按钮,输入“Selenium”,然后按确定
代码如下:
//得到WebDriver WebDriver driver=DriverHelper.CreateChromeDriver(); driver.get("file:///D:/WorkSpace/SeleniumTest/html/jsWin.html"); //找到页面上的按钮,并点击弹出提示框 driver.findElement(By.id("button1")).click(); Thread.sleep(1000); Alert prompt = driver.switchTo().alert(); //输出提示框的提示信息,此处最后输出“请输入你的名字” System.out.print(prompt.getText()); Thread.sleep(1000); //在提示框的文本框中,输入Selenium,并点击确定 prompt.sendKeys("Selenium"); prompt.accept();
最后的运行效果如下: