Python脚本控制的WebDriver 常用操作 <十> 层级定位
2013-12-09 16:06
561 查看
下面将使用WebDriver来模拟操作一个层级定位元素的操作
具体思路是:先点击显示出1个下拉菜单,然后再定位到该下拉菜单所在的ul,再定位这个ul下的某个具体的link。在这里,我们定位第1个下拉菜单中的Another action这个选项。
测试用HTML页面代码:
测试用Python脚本:
测试用例场景
在实际的项目测试中,经常会有这样的需求:页面上有很多个属性基本相同的元素,现在需要具体定位到其中的一个。由于属性基本相当,所以在定位的时候会有些麻烦,这时候就需要用到层级定位。先定位父元素,然后再通过父元素定位子孙元素。Python脚本
下面的代码演示了如何通过层级定位来定位下拉菜单中的某一项。由于两个下拉菜单中每个选项的link text都相同,href也一样,所以在这里就需要使用层级定位了。具体思路是:先点击显示出1个下拉菜单,然后再定位到该下拉菜单所在的ul,再定位这个ul下的某个具体的link。在这里,我们定位第1个下拉菜单中的Another action这个选项。
测试用HTML页面代码:
<html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8" /> <title>Level Locate</title> <script type="text/javascript" async="" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" rel="stylesheet" /> </head> <body> <h3>Level locate</h3> <div class="span3"> <div class="well"> <div class="dropdown"> <a class="dropdown-toggle" data-toggle="dropdown" href="#">Link1</a> <ul class="dropdown-menu" role="menu" aria-labelledby="dLabel" id="dropdown1" > <li><a tabindex="-1" href="#">Action</a></li> <li><a tabindex="-1" href="#">Another action</a></li> <li><a tabindex="-1" href="#">Something else here</a></li> <li class="divider"></li> <li><a tabindex="-1" href="#">Separated link</a></li> </ul> </div> </div> </div> <div class="span3"> <div class="well"> <div class="dropdown"> <a class="dropdown-toggle" data-toggle="dropdown" href="#">Link2</a> <ul class="dropdown-menu" role="menu" aria-labelledby="dLabel" > <li><a tabindex="-1" href="#">Action</a></li> <li><a tabindex="-1" href="#">Another action</a></li> <li><a tabindex="-1" href="#">Something else here</a></li> <li class="divider"></li> <li><a tabindex="-1" href="#">Separated link</a></li> </ul> </div> </div> </div> </body> <script src="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/js/bootstrap.min.js"></script> </html>
测试用Python脚本:
# -*- coding: utf-8 -*- from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait from time import sleep import os dr= webdriver.Firefox() file_path = 'file:///' + os.path.abspath('level_locator.html')#定位测试用的html文件路径 dr.get(file_path) dr.find_element_by_link_text('Link1').click()#注意text的文件大小写 WebDriverWait(dr,10).until(lambda the_driver: the_driver.find_element_by_id('dropdown1').is_displayed())#接受一个dr对象和设置最长等待时间为10s menu = dr.find_element_by_id('dropdown1').find_element_by_link_text('Another action') webdriver.ActionChains(dr).move_to_element(menu).perform()#鼠标移动到上面定义的menu上的Another action sleep(5) dr.quit()
相关文章推荐
- Python脚本控制的WebDriver 常用操作 <十二> send_keys模拟按键输入
- Python脚本控制的WebDriver 常用操作 <八> 简单的对象定位
- Python脚本控制的WebDriver 常用操作 <二十四> 定位frame中的元素
- Python脚本控制的WebDriver 常用操作 <十三> 处理button group层的定位
- Python脚本控制的WebDriver 常用操作 <九> 定位一组对象
- Python脚本控制的WebDriver 常用操作 <五> 访问链接
- Python脚本控制的WebDriver 常用操作 <十八> 获取测试对象的css属性
- Python脚本控制的WebDriver 常用操作 <二十三> wait
- Python脚本控制的WebDriver 常用操作 <十四> 处理button dropdown 的定位
- Python脚本控制的WebDriver 常用操作 <二> 关闭浏览器
- Python脚本控制的WebDriver 常用操作 <四> 设置浏览器大小
- Python脚本控制的WebDriver 常用操作 <一> 启动浏览器
- Python脚本控制的WebDriver 常用操作 <三> 浏览器最大化
- Python脚本控制的WebDriver 常用操作 <二十> 处理表单元素
- Python脚本控制的WebDriver 常用操作 <十七> 获取测试对象的属性及内容
- Python脚本控制的WebDriver 常用操作 <七>浏览器前进和后退操作
- Python脚本控制的WebDriver 常用操作 <二十二> 处理alert / confirm / prompt
- Python脚本控制的WebDriver 常用操作 <二十一> 执行JS
- Python脚本控制的WebDriver 常用操作 <二十八> 超时设置和cookie操作
- Python脚本控制的WebDriver 常用操作 <十五> 处理Navigation Bar