python3 selenium Select用法及Alert对话框处理

上一张介绍了selenium ActionChains用法

selenium提供了更高级的玩法,Select模块。直接根据属性或索引定位。

导入包

 from selenium.webdriver.support.select import Select

1. 通过select选项的索引来定位选择对应选项(从0开始计数),如选择第三个选项:select_by_index(2)

    r = driver.find_element(By.ID,'xxxx')

    Select(r).select_by_index(2)

2. 通过选项的value值来定位。每个选项,都有对应的value值

    如:

    <select id="nr" name="NR">
    <option selected="" value="10">每页显示10条</option>

    <option value="20">每页显示20条</option>

    <option value="50">每页显示50条</option>

    r = driver.find_element(By.ID,'NR')

    Select(r).select_by_value(20)

3. 直接通过选项的文本内容来定位

    Select(r).select_by_visible_text("每页显示50条")

4. 其他方法
deselect_all()          :取消所有选项
deselect_by_index()     :取消对应index选项
deselect_by_value()      :取消对应value选项
deselect_by_visible_text() :取消对应文本选项
first_selected_option()  :返回第一个选项
all_selected_options()   :返回所有的选项

在此篇介绍下弹出框操作:

我是循环中处理,直接拷贝过来

r = brower.find_element(By.XPATH,param)
ActionChains(brower).move_to_element(r).click(r).perform()
alert = alert_is_present.is_alert(brower)
if(alert):
    alert.accept()
    continue
判断是否弹出对话框

from selenium.common.exceptions import NoAlertPresentException


class alert_is_present(object):

    def is_alert(driver):
        try:
            alert = driver.switch_to.alert
            alert.text
            return alert
        except NoAlertPresentException:
            return False

对话框处理有如下情况:

1.警告消息框(alert)
  警告消息框提供了一个"确定"按钮让用户关闭该消息框,并且该消息框是模式对话框,也就是说用户必须先关闭该消息框然后才能继续进行操作。

2.确认消息框(confirm)

  确认消息框向用户提示一个"是与否"问题,用户可以根据选择"确定"按钮和"取消"按钮。

3.提示消息对话(prompt)
  提示消息框提供了一个文本字段,用户可以在此字段输入一个答案来响应您的提示。该消息框有一个"确定"按钮和一个"取消"按钮。选择"确认"会响应对应的提示信息,选择"取消"会关闭对话框。

selenium 提供switch_to_alert()方法定位到 alert/confirm/prompt对话框。使用 text/accept/dismiss/send_keys 进行操作,这里注意的是send_keys只能对prompt进行操作。

    • switch_to_alert()   #定位弹出对话
    • text()                   #获取对话框文本值
    • accept()                   #相当于点击"确认"
    • dismiss()                  #相当于点击"取消"
    • send_keys()              # 输入值,这个alert和confirm没有输入对话框,所以这里就不能用了,所以这里只能使用在prompt这里。

对于prompt需要特殊处理:

driver.find_element_by_xpath('/html/body/div/input[1]').click()
'''获取prompt对话框'''
dialog_box = driver.switch_to_alert()
'''添加等待时间'''
time.sleep(2)
'''获取对话框的内容'''
print (dialog_box.text)  #打印警告对话框内容
dialog_box.send_keys("2")  #弹出框内输入2
dialog_box.accept()  #接受
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值