文件上传
-
input标签可以直接使用
send_key(文件地址)
上传文件 - 用法:
el = driver.find_element_by_id('上传按钮id')
el.send_keys("文件路径+文件名")
- 案例
- 打开百度图片首页:https://image.baidu.com/
- 点击
摄像机
按钮 - 点击
选择文件
按钮 -
选择本地文件上传
- 案例代码:
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("这是一个弹框")
alert窗口处理案例
- 测试案例:
- 打开网页:https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable
- 操作窗口页面 将元素1拖拽到元素2这时候会有一个alert弹框,点击弹框中的’确定’
- 然后再按'点击运行'
- 关闭网页
- 实例代码:
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模式的发展历史介绍。