20171017学习笔记Selenium 2 第四章WebDriver API 4.8定位一组元素4.9多表单切换4.10多窗口切换

4.8定位一组元素
定位一组元素和定位一个元素方法类似,是讲element变成elements。
find_elements_by_id()
场景:
批量操作元素:例如,勾选复选框上所有的复选框。
先获取一组元素,再从这组元素中过滤出须要操作的元素。


inputs=driver.find_elements_by_tag_name( "input" )

for i in inputs:
if i.get_attribute( "type" )== 'checkbox' :
i.click()
time.sleep( 1 )
#driver.quit()

4.9多表单切换
涉及到frame/iframe表单嵌套页面的应用,无法直接定位。Webdriver只能对一个页面上的元素定位。switch_to.frame()可以切换表单。

driver.switch_to.frame("id")
driver.switch_to.parent_content()跳出当前表单。
driver.switch_to.default_content()调回最外层的页面

4.10多窗口切换
switch_to.window()方法来切换窗口


#coding=utf-8
from selenium import webdriver
import time

driver = webdriver.Firefox()
driver.implicitly_wait( 10 )

url= "http://bbs.u.360.cn"
driver.get(url)

#获得首页窗口句柄
first_windows=driver.current_window_handle

first_name=driver.find_element_by_xpath( ".//*[@id='js_bbs_recommended_games']/div/dl[2]/dt/a/p" ).text
print (first_name)
driver.find_element_by_xpath( "//*[@id='js_bbs_recommended_games']/div/dl[2]/dt/a/div/img" ).click()
all_handles= driver.window_handles

print (all_handles)
#进入列表页
for handle in all_handles:
if handle !=first_windows:
driver.switch_to.window(handle)
print ( '现在在列表页!' )
game_name=driver.find_element_by_css_selector( '.mr20.game_name' ).text
print ( '当前游戏名称是%s' %(game_name) )

#回到首页

for handle in all_handles:
if handle == first_windows:
driver.switch_to.window(handle)
print ( '现在在首页' )
driver.find_element_by_id( "key-words" ).send_keys( "hello" )
driver.find_element_by_id( 'search-a' ).click()
sleep( 5 )
driver.quit()


版权声明:本文为dutianang原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。