Selenium学习笔记之010:层级定位

来源:互联网 发布:网络电视调试 编辑:程序博客网 时间:2024/06/04 01:17

一、场景:

  假如两个控件,他们长的一模样,还都叫“张三”,唯一的不同是一个在北京,一个在上海,那我们就可以通过,他们的城市,区,街道,来找到他们。

在实际的测试中也经常会遇到这种问题:页面上有很多个属性基本相同的元素,现在需要具体定位到其中的一个。由于属性基本相当,所以在定位的时候会有些麻烦,这时候就需要用到层级定位。先定位父元素,然后再通过父元素定位子孙元素。

二、实例

       下图自制了一个页面,上面有两个文字链接,点击两个链接会弹出一模一样的的两个下拉菜单,这两个菜单的属性基本一样。那么我如何区分找到相应的菜单项呢?


定位思路:

具体思路是:先点击显示出1个下拉菜单,然后再定位到该下拉菜单所在的ul,再定位这个ul下的某个具体的link。在这里,我们定位第1个下拉菜单中的Action这个选项。

方法如下:

# -*- coding: utf-8 -*-from selenium import webdriverfrom selenium.webdriver.support.ui import WebDriverWaitimport timeimport osdr = webdriver.Firefox()file_path =  'file:///' + os.path.abspath('level_locate.html')dr.get(file_path)#点击Link1链接(弹出下拉列表)dr.find_element_by_link_text('Link1').click()#找到id 为dropdown1的父元素WebDriverWait(dr, 10).until(lambda the_driver: the_driver.find_element_by_id('dropdown1').is_displayed())#在父亲元件下找到link为Action的子元素menu = dr.find_element_by_id('dropdown1').find_element_by_link_text('Action')#鼠标定位到子元素上webdriver.ActionChains(dr).move_to_element(menu).perform()time.sleep(2)dr.quit()



本文部分参考虫师webdriver文档。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 富贵竹叶子变黄怎么办 富贵竹的叶子黄了怎么办 土栽富贵竹发黄怎么办 富贵竹的黄叶子怎么办 土培富贵竹发黄怎么办 富贵竹根变黄了怎么办 富贵竹叶子尖发黄怎么办 富贵竹新叶子发黄怎么办 富贵竹杆变黄了怎么办 水培观音竹叶子发黄怎么办 富贵竹叶子根部发黄怎么办 观音竹叶子干了怎么办 富贵竹叶子发干怎么办 观音竹老叶发黄怎么办 发财树缺营养怎么办 富贵竹根部长芽怎么办 门口的竹子发黄怎么办 富贵竹长根了怎么办 水养竹子太长怎么办 海棠根腐烂了怎么办 水竹根腐烂了怎么办 水培富贵竹黑根怎么办 转运竹根部发黑怎么办 富贵竹跟泡烂怎么办 富贵竹根烂了怎么办 富贵竹的须变黑怎么办 泡富贵竹水发臭怎么办 富贵竹水变黑了怎么办 水观音叶子黄了怎么办 富贵竹根部腐烂发臭怎么办 富贵竹根部发粘怎么办 水竹草叶子发黄怎么办 水竹叶子心发黄怎么办 塔竹叶子发黄怎么办 铁树叶有发黄怎么办 铁树夏天叶发黄怎么办 铁树的叶尖发黄怎么办 铁树叶子发黄是怎么办 榕树盆景长蜜怎么办 六月雪叶子枯萎了怎么办 小叶冬青掉叶子怎么办