selenium webdriver 学习笔记(二)

selenium webdriver

一、定位一组元素:

webdriver可以很方便的使用findElement 方法来定位某个物定的对象。不过有时候我们却要定位一组对象,这时候就需要使用findElements方法。

应用场景:

1. 批量操作对象,比如将页面上所有checkbox都选择上;

2.先获取一组对象,再在这组对象中过滤出需要定位的一些对象。比如定位页面上所有checkbox,然后再选择最后一个。

 

二、多层框架、窗口定位

switch_to_frame()

switch_to_window()

1. 多层框架定位 

有时候我们定位一个元素,定位器没有问题,但一直定位不了,这时候要检查这个元素是否在一个frame中,selenium webdriver提供了一个switch_to_frame方法,可以很轻松的解决这个问题。

示例:

from selenium import webdriver

import time

import os

 

browser = webdrivers.Firefox()

file_path = 'file:///' + os.path.abspath('frame.html')

browser.get(file_path)

time.sleep(10)

#先找到frame文件

browser.switch_to_frame("f1")

browser.switch_to_frame("f2")

#然后就可以正常的操作元素了

browser.find.element_by_id("kw").send_keys("Python")

browser.find.element_by_id("su").click()

time.sleep(3)

browser.quit()

2. 多层窗口定位

有可能嵌套的不是框架,而是窗口,还有针对窗口的方法:

switch_to_window方法与switch_to_frame相同

示例:

driver.switch_to_window("windowName")

 

三、层级定位

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

from selenium.webdriver.supper.ui import WebDriverWait

webDriverWait(dr,10)    #10s内每隔500ms扫描一次页面变化,当出现指定的元素后结束。

is_displayed()        #该元素量是否用户可以见

class ActionChains(driver)  #生成用户的行为。

move_to_element(menu)    #移动鼠标到一个元素中,menu上面已经定义了它所指向的哪一个元素。

perform()            #执行所有点存储的行为。

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2015-01-24 18:56  沉默的云  阅读(260)  评论(0编辑  收藏  举报