自动化测试遇到对话框怎么办?

一、认识对话框
Web 页面中对话框是很常见的一种控件,当我们使用常见的元素定位方法定位对话框中的按钮时会发现定位失败,这个时候我们怎么办呢?要准确定位,我们有必要了解下对话框。一般而言,alert对话框有3种:Alert,prompt,confirm。

  1. alert() 警告框,点击后弹出包含一个确定按钮的警告框。警告消息框 alert 的方法中有一个参数,即开发者想让用户看到的文本,该文本不是 HTML 格式。它提供了一个“确定”按钮可以让用户关闭警告框,且警告框属于模态窗口,也就是说,用户必须先关闭该消息框然后才能继续进行操作。

  2. confirm() 确认框,点击后会弹出一个包含确定按钮和取消按钮的确认框。确认框使用确认消息框向用户询问“yes or no”,用户可以选择单击“确定”按钮或者单击“取消”按钮,confirm方法的返回值是一个Boolean值。它也是一种模态窗口,用户必须在该对话框关闭后,才能进行下一步操作。

  3. prompt() 提示框,点击后会弹出一个包含确定按钮、取消按钮以及一个文本框的提示框,用户可以在文本框输入一个答案来响应提示框。当用户在文本框中输入信息,并且点击“确定”按钮,网页会给与回应。它也是一种模态窗口,用户必须在该对话框关闭后,才能进行下一步操作。

二、处理对话框

  1. 对于这三种对话框我们在selenium中的处理方式是一样的:
    (1) driver.switch_to.alert 获取alert
    (2) alert.accept() 接受对话框选项(相当于点击了确定按钮)
    (3) alert.dismiss() 取消对话框选项
    (4) alert.text 返回对话框中的文字信息
  2. Alert警告框

    点击按钮获取警告框

    driver.find_element_by_css_selector("#alert").click()
    sleep(2)

    获取警告框

    alert = driver.switch_to.alert

    获取警告框文本

    print("警告框文本信息为:", alert.text)

    接受警告框(点击确定按钮)

    alert.accept()
    sleep(2)

    再次点击

    driver.find_element_by_css_selector("#alert").click()

    获取警告框

    alert = driver.switch_to.alert
    sleep(2)

    取消警告框(点击X关闭按钮)

    alert.dismiss()

  3. Confirm确认框

    点击按钮获取确认框

    driver.find_element_by_css_selector("#confirm").click()
    sleep(2)

    获取确认框

    alert = driver.switch_to.alert

    获取确认框文本

    print("确认框文本信息为:", alert.text)

    接受确认框(点击确定按钮)

    alert.accept()
    sleep(2)

    再次点击获取

    driver.find_element_by_css_selector("#confirm").click()
    alert = driver.switch_to.alert
    sleep(2)

    取消确认框(点击取消按钮)

    alert.dismiss()

  4. Prompt提示框

    点击按钮获取提示框

    driver.find_element_by_css_selector("#prompt").click()
    sleep(2)

    获取提示框

    alert = driver.switch_to.alert

    获取提示框文本

    print("提示框文本信息为:", alert.text)
    sleep(2)

    给提示框中文本框输入内容

    alert.send_keys("www.ujiuye.com")

    接受提示框(点击确定按钮)

    alert.accept()
    sleep(2)

    再次点击获取

    driver.find_element_by_css_selector("#prompt").click()
    alert = driver.switch_to.alert

    给提示框中文本框输入内容

    alert.send_keys("www.offcn.com")
    sleep(2)

    取消提示框(点击取消按钮)

    alert.dismiss()
    通过以上案例,下次遇到对话框,你会定位了吗?想要了解更多软件测试相关知识的话,那么可以持续关注我们的栏目。
    想要了解更多软件测试的课程,加入优就业的软件测试交流群吧,群内会有专职的老师为你答疑解惑。另外群内不定期还会有免费直播课,由现役的讲师来授课。还有5天免费试学的活动,心动不如行动,赶快加入吧。点击加群 群号:617089523(为了更有效率地提供服务,加群时请备注暗号:领资料)

猜你喜欢

转载自blog.51cto.com/14669527/2471459