目录:导读
前言
1、定位一组对象
webdriver使用find_element方法定位一个特定的对象,不过我们有时需定位一组对象,webdriver同样提供了定位一组元素的方法叫find_elements。
定位一组对象一般用于以下场景:
批量操作对象,比如将页面上的checkbox都勾选上。
先获取一组对象,再在这组对象中过滤需要具体定位的一些对象。
举例:使用tag_name定位一组指定页面上的checkbox
filepath = 'file:' + os.path.abspath('checkbox.html')
driver.get(filepath)
inputs = driver.find_elements_by_tag_name("input")
for input in inputs:
if input.get_attribute('type')=='checkbox':
input.click()
2、层级定位
在实际的项目测试中,经常会遇到无法直接定位到需要选取的元素,但是其父元素比较容易定位,通过定位父元素再遍历其子元素选择需要的目标元素,或者需要定位某个元素下所有的子元素。
层级定位的思想是先定位父对象,然后再从父对象中精确定位出其我们需要选取的后代元素。
语法举例:
driver.find_element_by_id('***').find_element_by_link_text('***')
3、定位frame中的对象
在web应用中经常会出现frame嵌套的应用,假设页面上有A,B两个frame,其中B在A内,那么定位B中的内容则需要先到A,再到B。
switch_to_frame方法可以把当前定位的主题切换到frame里,在frame里实际是嵌套了另外一个页面,而webdriver每次只能在一个页面识别,所以需要用switch_to_frame方法去获取frame中嵌套的页面。
举例:
driver.switch_to.frame('frame1') #移动到id为frame1的frame上
print driver.find_element_by_css_selector("#div1").text
driver.switch_to.default_content() #将识别的主体切换出frame
print driver.find_element_by_css_selector("#id1").</