干貨 | web自動化總卡在文件上傳和彈框處理上?
在有些場景中,需要上傳文件,而 Selenium 無法定位到彈出的文件框,以及網頁彈出的提醒。這些都是需要特殊的方式來處理。
input 標簽使用自動化上傳,先定位到上傳按鈕,然后 send_keys 把路徑作為值給傳進去. 如圖所示,是企業(yè)微信文件上傳的頁面 定位到標簽為 input,type 為 file 的元素信息,然后使用 send_keys 把文件路徑作為值給傳進去。

driver.find_element(By.CSS_SELECTOR, "#js_upload_input")\
? ?.send_keys("./hogwarts.png")
在頁面操作中有時會遇到 JavaScript 所生成的 alert、confirm 以及 prompt 彈框,可以使用switch_to.alert()方法定位到。然后使用 text、accept、dismiss、send_keys 等方法進行操作。
switch_to.alert():獲取當前頁面上的警告框。
text:返回 alert、confirm、prompt 中的文字信息。
accept():接受現有警告框,即點擊確定。
dismiss():解散現有警告框,即點擊取消。
send_keys(keysToSend):發(fā)送文本至警告框。keysToSend:將文本發(fā)送至警告框。
輸入一段文本點擊比如提交按鈕,會彈出確認內容的彈框,這種場景可以使用下面的方式處理:
"""Alert彈窗獲取文本與確認操作"""
driver.get("http://sahitest.com/demo/alertTest.htm")
driver.find_element_by_name("b1").click()?
#添加顯示等待,等待彈框的出現
WebDriverWait(driver, 5, 0.5).until(EC.alert_is_present())?
#切換到彈框?
alert = driver.switch_to.alert?
#打印彈框的文本
print(alert.text)?
#點擊確定?
alert.accept()?
#不點擊確定,解除彈框
alert.dismiss()
""" Prompt 彈窗獲取文本、輸入內容、確認操作 """
driver.get("http://sahitest.com/demo/promptTest.htm")
driver.find_element_by_name("b1").click()
#添加顯示等待,等待彈框的出現?
WebDriverWait(driver, 5).until(EC.alert_is_present())?
#切換到彈框?
alert = driver.switch_to.alert?
#向彈框輸入一段文本?
alert.send_keys('Selenium Alert彈出窗口輸入信息')
#點擊確定
alert.accept()?
""" Comfirm彈窗獲取文本、確認、取消操作 """
driver.get("http://sahitest.com/demo/confirmTest.htm")
driver.find_element_by_name("b1").click()
?# 等待彈出窗口出現
?WebDriverWait(driver, 5).until(EC.alert_is_present())
#切換到彈框?
alert = driver.switch_to.alert
#點擊確定?
alert.accept()?
#點擊取消
?alert.dismiss()
Web自動化中文件上傳與彈框處理就先講到這里啦,大家還想看什么內容的文章也可以留言告訴我們哦!