您的位置:软件测试 > 开源软件测试 > 开源功能测试工具 > Selenium
轻松自动化---selenium-webdriver(python) (五)
作者:网络转载 发布时间:[ 2013/8/13 10:42:06 ] 推荐标签:

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

  方法如下:

# -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
import time
import os

dr = 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()

  定位思路:

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

  ---------------------------------------------------------------------

  虽然我每行代码前叫了注释,但可能还是不太容易理解,因为里面多了不少以前没见过的新东东。

  WebDriverWait(dr, 10)

  10秒内每隔500毫秒扫描1次页面变化,当出现指定的元素后结束。dr不解释了,前面操作webdriver.firefox()的句柄

  is_displayed()

  该元素是否用户可以见

  class ActionChains(driver)

  driver: 执行用户操作实例webdriver

  生成用户的行为。所有的行动都存储在actionchains对象。通过perform()存储的行为。

  move_to_element(menu)

  移动鼠标到一个元素中,menu上面已经定义了他所指向的哪一个元素

  to_element:元件移动到

  perform()

  执行所有存储的行为

  ------------------------------需要我们日常工作中细细品味、慢慢消化这些函数的用法

上一页123下一页
软件测试工具 | 联系我们 | 投诉建议 | 诚聘英才 | 申请使用列表 | 网站地图
沪ICP备07036474 2003-2017 版权所有 上海泽众软件科技有限公司 Shanghai ZeZhong Software Co.,Ltd