selenium中能通过定位元素,selenium常用api之元素定位有哪几种方法
Selenium提供了八种定位方法。
编号
名字
分类单元
标签名称
链接文本
部分链接文本
语言
CSS选择器
Python selenium中的这八个解决方案如下:
按id查找元素(
按名称查找元素(
按类名查找元素(
查找元素标记名(
查找元素链接文本(
查找元素部分链接文本(
通过xpath查找元素(
查找元素按css选择器(
控制浏览器窗口的大小
司机。set _ window _ size (480 480,800))。
控制浏览器的后退和前进。
更新页面
Driver.refresh更新当前页面
然后点击回车。
Clear():清除文本。
Send_keys(value):模拟按键输入。
单击():单击元素。
使服从
提交() )
Submit))方法用于提交表单。例如,您可以使用此方法来模拟在搜索框中输入关键字后的“后退”操作。
其他常用方法
Size:返回元素的大小。
文本:获取元素的文本。
Get_attribute(name):获取属性值。
Is_displayed(:设置元素对用户是否可见。
输出结果:
执行上述步骤以确认结果。使用size方法获取百度输入框的宽度和高度,使用text方法获取百度底部的注册信息。Get_attribute(用于获取百度输入的type属性的值,is_displayed)返回元素是否可见,如果可见,则返回True,否则返回False。
鼠标事件
web驱动程序在ActionChains类中封装了这些关于鼠标操作的方法。
ActionChains类提供了鼠标操作的通用方法。
Perform()执行存储在所有ActionChains中的操作;
Context_click(:右击;
双击(:双击;
拖放(:拖动;
Move_to_element(:鼠标悬停。
来自selenium . webdriverimportactionchains
提供鼠标操作的ActionChains类。
动作通道(驱动程序))。
调用ActionChains()类并将浏览器驱动程序作为参数传递。
Move _ to _ element(以上)
context_click()方法用于模拟鼠标右键操作,调用时必须指定元素的位置。
执行() )
存储在所有ActionChains中的行为可以理解为整个操作的提交操作。
键盘事件
Kys))类提供了一种按键盘上大多数键的方法。如上所述,send_keys))方法可以用来模拟键盘输入。也可以用来输入键盘上的按键,比如Ctrl A,Ctrl C等。
另外,上面的脚本没有实际意义,只展示了模拟键盘的各种按键以及按键的组合。
driver.com mon . keysimportkeys
在使用键盘键方法之前,必须部署keys类。
Send_keys(keys.back_space)删除键(退格)。
Send_keys(按键。空格)空格键(空格))。
Send_keys(按键。Tab) Tab键(tab))。
Send_keys(按键。Escape return键)。
Send_keys(keys.enter)回车键(enter)。
派遣
_ keys (keys.control, A )全选(Ctrl A)
Send _ keys (keys.control, C) copy (Ctrl C)
Send _ keys (keys.control, x) cut (Ctrl X)
Send _ keys (keys.control, V )粘贴(Ctrl V)
Send_keys(按键。键盘F1
……
Send_keys(按键。键盘F12
获取断言信息
无论是做功能测试还是自动化测试,最后一步都是将实际结果与预期进行比较。这种比较叫做断言。
我们通常可以通过获取标题、URL和文本等信息来做出断言。如前所述,text方法用于获取标签对之间的文本信息。下面以百度为例,介绍一下如何获取这些信息。
该脚本运行如下:
Title:用于获取当前页面的标题。
Current_url:用户获取当前页面的url。
Text:获取搜索条目的文本信息。
设置元素等待
WebDriver提供了两种类型的等待:显式等待和隐式等待。
显式等待
显式等待使WebdDriver等待某个条件得到满足,否则在达到最大持续时间时会抛出TimeoutException。
WebDriverWait类是由WebDirver提供的等待方法。在设定的时间内,默认每隔一段时间检测一次当前页面元素的存在,超过设定的时间检测不到就会抛出异常。具体格式如下:
WebDriverWait(驱动程序,超时,poll_frequency=0.5,ignored_exceptions=None)
驱动:浏览器驱动。
超时:最大超时时间,默认情况下以秒为单位。
Poll_frequency:检测的间隔(步)时间,默认为0.5S。
Ignored_exceptions:超时后的异常信息。默认情况下,会引发NoSuchElementException异常。
WebDriverWait()通常与until()或until_not()方法结合使用。下面是对until()和until_not()方法的描述。* until(method,message== )调用此方法提供的驱动程序作为参数,直到返回值为True。* until _ not (method,message= )调用此方法提供的驱动程序作为参数,直到返回值为False。
在这个示例中,expected_conditions被as关键字重命名为EC,并调用presence_of_element_located()方法来确定该元素是否存在。
隐式等待
WebDriver提供implicitly_wait()方法实现隐式等待,默认设置为0。它的用法相对简单得多。
implicitly_wait()的默认参数以秒为单位。在本例中,等待时间设置为10秒。首先,这10秒并不是一个固定的等待时间,并不影响脚本的执行速度。其次,它不会等待页面上的元素。当脚本执行到一个元素位置时,如果可以定位到该元素,则继续执行;如果该元素不能被定位,它将不断地通过轮询确定该元素是否被定位。如果元素位于第6秒,执行将继续。如果在超过设定时间(10秒)之前还没有定位到元素,将会引发异常。
定位一组元素
WebDriver还提供了8种定位一组元素的方法。
定位一组元素的方法类似于定位单个元素的方法。唯一不同的是,在单词元素后面,有一个额外的S表示复数。
接下来,通过示例演示如何定位一组元素:
程序运行结果:
多形式切换
在Web应用中,经常会遇到frame/iframe表单嵌套页面的应用。WebDriver只能识别和定位一个页面上的元素,而不能直接定位frame/iframe表单的嵌入式页面上的元素。这时你需要通过switch_to.frame()方法将当前定位的主题切换到frame/iframe表单的嵌入页面。
26邮箱登录框的结构大概是这样的。如果要操作登录框,必须先切换到iframe形式。
Switch_to.frame()默认可以直接取表单的id或name属性。如果iframe没有可用的id和name属性,可以通过以下方式找到它。
此外,当您进入多级表单时,可以通过switch_to.default_content()跳回到最外层页面。
多窗口切换
在页面操作过程中,有时点击一个链接会弹出一个新窗口,需要主机切换到新打开的窗口进行操作。WebDriver提供了switch_to.window()方法,可以在不同的窗口之间切换。以百度首页和百度注册页面为例,在两个窗口之间进行切换。
本例中涉及的新方法如下:
获取当前窗口句柄。
Window_handles:将所有窗口的句柄返回给当前会话。
Switch_to.window():用于切换到对应的窗口,类似于上一节的switch_to.frame()。前者用于不同窗口之间的切换,后者用于不同窗体之间的切换。
警告框处理
在WebDriver中处理JavaScript生成的告警、确认、提示非常简单。具体方法是使用switch_to.alert方法定位报警/确认/提示,然后使用text/accept/miss/send _ keys等方法进行操作。
文本:返回预警/确认/提示中的文本信息。
Accept():接受现有的警告框。
dissolve():消除现有的警告框。
Send_keys(keysToSend):向警告框发送文本。将文本发送到警告框。
通过switch_to_alert()方法获取当前页面的警告框,通过accept()方法接受。
下拉框选择
有时候我们会遇到下拉框,WebDriver提供了Select类来处理下拉框。
选择类用于定位选择标签。select_by_value()方法用于定位下一个选项中的值。
文件上传
对于通过input标签实现的上传功能,可以看作是一个输入框,即通过send_keys()指定本地文件路径来实现文件上传。
使用以下代码创建一个upfile.html文件:
通过浏览器打开upfile.html文件,功能如下所示。
接下来,通过send_keys()方法上传文件。
Cookie操作
有时候我们需要验证浏览器中的cookie是否正确,因为基于真实cookie的测试是白盒和集成测试做不到的。WebDriver提供了操作cookie的相关方法,可以读取、添加、删除cookie信息。
WebDriver操作cookie的方法:
Get_cookies():获取所有cookie信息。
Get_cookie(name):返回带有关键字“name”的字典的cookie信息。
Add_cookie(cookie_dict):添加一个cookie。“cookie_dict”指的是字典对象,它必须有名称和值。
Delete _ cookie(名称,选项字符串):删除cookie信息。“name”是要删除的cookie的名称,“optionsString”是cookie的选项。目前,支持的选项包括“路径”和“域”。
Delete _ all _ cookies():删除所有cookie信息。
下面,通过get_cookies()获取当前浏览器的cookie信息。
从执行结果可以看出,cookie数据是以字典的形式存储的。知道了cookie的存储形式,我们就可以根据这个形式将cookie信息写入浏览器。
从执行结果可以看出,最后的cookie信息是在脚本执行期间由add_cookie()方法添加的。通过遍历得到所有cookie信息,从而找到某个特定cookie的值,该cookie的键是“name”和“value”。
调用JavaScript代码
虽然WebDriver提供了向前和向后的方法来操作浏览器,但是并没有为浏览器滚动条提供相应的操作方法。在这种情况下,可以借助JavaScript来控制浏览器的滚动条。WebDriver提供了execute_script()方法来执行JavaScript代码。
用于调整浏览器滚动条位置的JavaScript代码如下:
window.scrollTo()方法用于设置浏览器窗口滚动条的水平和垂直位置。该方法的第一个参数表示水平左边距,第二个参数表示垂直上边距。其代码如下:
通过浏览器打开百度进行搜索,事先通过set_window_size()方法将浏览器窗口设置为固定宽度和高度显示,使窗口中出现水平和垂直滚动条。然后通过execute_script()方法执行JavaScripts代码来移动滚动条的位置。
窗口截图
自动化用例是由程序执行的,所以有时候打印出来的错误信息不是很清楚。如果能在脚本执行出错时保存当前窗口的截图,就能通过图片直观的看到出错的原因。WebDriver提供了截图函数get_screenshot_as_file()来截取当前窗口。
脚本完成后,打开D盘,可以找到baidu_img.jpg镜像文件。
关闭浏览器。
在前面的例子中,我们一直使用quit()方法,意思是退出相关的驱动程序,关闭所有窗口。此外,WebDriver还提供了close()方法来关闭当前窗口。比如多窗口处理,当用例执行过程中打开了多个窗口,我们想关闭其中一个,那么就需要使用close()方法来关闭它。
Close()关闭单个窗口。
Quit()关闭所有窗口