十、Selenium文件上传弹框处理

文件上传

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


      image.png

      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("这是一个弹框")
    image.png

alert窗口处理案例

image.png

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模式的发展历史介绍。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容