python selenium下载对话框_selenium webdriver基于Python系列文章 总结 5 对话框处理

现在很多前端框架的对话框是 div 形式的,也有一些弹出框iframe处理比较麻烦,如上一节所说的。使用百度登录页面演示一下,这个登录对话框是个div

coding=utf-8 from

selenium import webdriver driver = webdriver.Firefox()

driver.get("http://www.baidu.com/")

点击登录链接

driver.find_element_by_name("tj_login").click()

通过二次定位找到用户名输入框

div=driver.find_element_by_class_name("tang-content").find_element_by_name("userName")

div.send_keys("username")

输入登录密码 driver.find_element_by_name("password").send_keys("password")

点击登录

driver.find_element_by_id("TANGRAM__PSP_10__submit").click()

driver.quit()

webdriver提供定位一组对象的方法:

find_elements_by_id()

find_elements_by_name()

find_elements_by_class_name()

find_elements_by_tag_name()

find_elements_by_link_text() find_elements_by_partial_link_text()

find_elements_by_xpath()

find_elements_by_css_selector()

定位一组对象,例一:

……

选择页面上所有的tag name 为input的元素

inputs = driver.find_elements_by_tag_name('input')

然后从中过滤出tpye为checkbox的元素,单击勾选

for input in inputs:

if input.get_attribute('type') == 'checkbox':

input.click()

……

定位一组对象,例二:

……

选择所有的type为checkbox的元素并单击勾选

checkboxes = driver.find_elements_by_css_selector('input[type=checkbox]')

for checkbox in checkboxes:

checkbox.click()

……

层级定位:

……

点击Link1链接(弹出下拉列表) driver.find_element_by_link_text('Link1').click()

在父亲元件下找到link为Action的子元素

menu = driver.find_element_by_id('dropdown1').find_element_by_link_text('Another action')

鼠标移动到子元素上

ActionChains(driver).move_to_element(menu).perform()

……

frame表单嵌套的定位:

switch_to_frame 方法

……

先找到到ifrome1(id = f1)

driver.switch_to_frame("f1")

再找到其下面的ifrome2(id =f2)

driver.switch_to_frame("f2")

下面就可以正常的操作元素了

driver.find_element_by_id("kw1").send_keys("selenium")

……

div弹窗的处理:

……

点击登录链接

driver.find_element_by_name("tj_login").click()

通过二次定位找到用户名输入框

div=driver.find_element_by_class_name("tang-content").find_element_by_name("userName") div.send_keys("username")

……

多窗口的处理:

current_window_handle   获得当前窗口句柄

window_handles   返回的所有窗口的句柄到当前会话

switch_to_window() 用于处理多窗口之前切换

多窗口的处理:

获得当前窗口

nowhandle=driver.current_window_handle

打开注册新窗口

driver.find_element_by_name("tj_reg").click()

获得所有窗口

allhandles=driver.window_handles

循环判断窗口是否为当前窗口

for handle in allhandles:

if handle != nowhandle:

driver.switch_to_window(handle)

print 'now register window!'

#切换到邮箱注册标签

driver.find_element_by_id("mailRegTab").click()

driver.close()

driver.switch_to_window(nowhandle)#回到原先的窗口

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值