十、Selenium文件上传弹框处理

时间:2021-6-4 作者:qvyue

文件上传

  • input标签可以直接使用send_key(文件地址)上传文件
  • 用法:
    • el = driver.find_element_by_id('上传按钮id')
    • el.send_keys("文件路径+文件名")
  • 案例
    • 打开百度图片首页:https://image.baidu.com/
    • 点击摄像机按钮
    • 点击选择文件按钮
    • 选择本地文件上传

      十、Selenium文件上传弹框处理
      image.png

      十、Selenium文件上传弹框处理
      image.png
    • 案例代码:
from time import sleep
from selenium import webdriver

class TestFile:
    def setup(self):
        self.driver = webdriver.Chrome()
        self.driver.maximize_window()
        self.driver.implicitly_wait(5)

    def teardown(self):
        self.driver.quit()

    def test_file_upload(self):
        self.driver.get("https://image.baidu.com/")
        self.driver.find_element_by_id("sttb").click()
        self.driver.find_element_by_id("uploadImg").send_keys("1.png")
        sleep(2)

弹框处理机制

  • 在页面操作中有时会遇到JavaScript所生成的alert、confirm以及prompt弹框,可以使用switch_to.alert()方法定位到。然后使用 text/ accept / dismiss / send_keys等方法进行操作。
  • 操作alert常用的方法:
    • switch_to.alert():获取当前页面上的警告框。
    • text:返回alert / confirm / prompt中的文字信息。
    • accept():接受现有警告框。
    • dismiss():解散现有警告框。
    • send_keys(keysToSend):发送文本至警告框。keysToSend:将文本发送至警告框。

模拟弹框

  • 在Console里输入window.alert("这是一个弹框")
    十、Selenium文件上传弹框处理
    image.png

alert窗口处理案例

  • 测试案例:
    • 打开网页:https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable
    • 操作窗口页面 将元素1拖拽到元素2这时候会有一个alert弹框,点击弹框中的’确定’
    • 然后再按’点击运行’
    • 关闭网页
十、Selenium文件上传弹框处理
image.png

十、Selenium文件上传弹框处理
image.png
  • 实例代码:
from time import sleep
from selenium import webdriver
from selenium.webdriver import ActionChains

class TestAlert:
    def setup(self):
        self.driver = webdriver.Chrome()
        self.driver.maximize_window()
        self.driver.implicitly_wait(5)

    def teardown(self):
        self.driver.quit()

    def test_alert(self):
        self.driver.get("https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable")
        self.driver.switch_to.frame("iframeResult") # 切换到iframe中
        drag = self.driver.find_element_by_id("draggable")
        drop = self.driver.find_element_by_id("droppable")
        action = ActionChains(self.driver)
        action.drag_and_drop(drag, drop).perform() # 将元素1拖拽到元素2
        sleep(2)
        alert = self.driver.switch_to.alert
        print(alert.text)   # 打印弹窗信息
        alert.accept()    # 点击弹框的确定
        self.driver.switch_to.default_content() # 切换到默认frame中
        self.driver.find_element_by_id("submitBTN").click()

下一节:Page Object设计模式,Page Object模式的发展历史介绍。

声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:qvyue@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。