selenium中能通过定位元素,selenium常用api之元素定位有哪几种方法

  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()关闭所有窗口

selenium中能通过定位元素,selenium常用api之元素定位有哪几种方法