4.11、警告框处理
在 WebDriver 中处理 JavaScript 所生成的 alert、confirm 以及 prompt 十分简单,具体做法是使用switch_to_alert()方法定位到 alert、confirm、prompt,然后使用 text、accept、dismiss、sendKeys 等方法进行操作。
● getText():返回 alert/confirm/prompt 中的文字信息。
● accept(): 接受现有警告框。
● dismiss():解散现有警告框。
● sendKeys(keysToSend):发送文本至警告框。
● keysToSend:将文本发送至警告框。
如下图所示,百度搜索设置弹出的窗口是不能通过前端工具对其进行定位的,这个时候就可以通过switch_to_alert()方法接受这个弹窗。
【代码如下:】
从这个例子中我们重温了本章 4.4 节中 ActionChains 类所提供的 clickAndHold()鼠标点击并控制的使用,将将鼠标点击并控制在“设置”链接上,然后在弹出的下拉菜单中单击“搜索设置”按钮,设置完成后单击“保存设置”,弹出保存确认警告框。通过 switch_to_alert()方法获取当前页面上的警告框,并使用 accept()方法接受警告框。
4.12、下拉框处理
有时候我们会碰到<select></select>标签的下拉框。直接点击下拉框中的选项不一定可行。Selenium 专门提供了 Select 类来处理下拉框。
【代码如下:】
selectByValue()方法符用于选取<option>标签的 value 值。
4.13、sendKeys实现上传文件
上传文件是比较常见的 Web 功能之一,但 WebDriver 并没有提供专门用于上传的方法,如何实现上传操作关键在于上传文件的思路。
一般 Web 页面的上传功能的操作,需要单击“上传”按钮后需要打开本地的 Window 窗口,从窗口中选择本地文件进行上传。而 WebDriver 是无法操作 Windows 控件的,所以,对于初学者来说,一般思路会卡在如何识别 Window 控件这个问题上。
对于 Web 页面的上传功能实现一般有以下两种方式。
1) 【普通上传】:普通的附件上传是将本地文件的路径作为一个值放在 input 标签中,通过 form 表单将这个值提交给服务器。
2) 【插件上传】:一般是指基于 Flash、JavaScript 或 Ajax 等技术所实现的上传功能。
对于通过 input 标签实现的上传功能,可以将其看作一个输入框,即通过 sendKeys()指定本地文件路径的方式实现文件上传。
通过这种方法上传,就避免了操作 Windows 控件的步骤。如果能找到上传的 input 标签,那么基本上就可以通过 sendKeys()方法向其输入一个文件地址来实现上传。