您的位置:首页 > 编程语言 > Python开发

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

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

inputs=driver.find_elements_by_tag_name("input")

foriininputs:
ifi.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
fromseleniumimportwebdriver
importtime

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)
#进入列表页
[b]for
handleinall_handles:
ifhandle
!=first_windows:
driver.switch_to.window(handle)
print('现在在列表页!')
game_name=driver.find_element_by_css_selector('.mr20.game_name').text
print('当前游戏名称是%s'%(game_name)
)

#回到首页

forhandleinall_handles:
ifhandle
== 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()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息