selenium-09-文件上传和日期控件

文件上传操作

文件上传-input标签文件选择

input标签的文件上传可以使用send_keys(文件路径)解决

import time
import pyautogui
from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.maximize_window()
driver.get("file:///D:/Web_DWS_project/test_case/文件上传.html")

driver.find_element(By.ID,"fileToUpload").send_keys("D:\Web_DWS_project\picture\上传文件.jpeg")

time.sleep(3)
driver.quit()

文件上传-非input标签文件选择-上传单一文件

非input标签的文件上传selenium库是无法处理的,要结合PyAutoGui库处理
步骤一:安装 pip install pyautogui -i 镜像源
步骤二:使用
要先调试定位(获取鼠标坐标)-获取地址栏坐标-移动到地址栏-点击进入-清除原有路径-输入目标路径-输入两次回车键进入目标路径-鼠标移动到要选择的图片-双击打开图片

import time
import pyautogui
from selenium import webdriver

driver = webdriver.Chrome()
driver.maximize_window()
driver.get("file:///D:/Web_DWS_project/test_case/非input文件上传.html")
time.sleep(10)
# 获取坐标
x,y = pyautogui.position()
print(f"x坐标{x},y坐标{y}")
import time
import pyautogui
from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.maximize_window()
driver.get("file:///D:/Web_DWS_project/test_case/非input文件上传.html")
driver.find_element(By.CLASS_NAME,"custom-upload-button").click()
# 移动到地址栏
pyautogui.moveTo(295,65)
# 这里不加等待会导致下面点击进入失败
time.sleep(3)
# 点击进入
pyautogui.click()
# 清除原有地址
pyautogui.press("backspace")
# 键盘输入文件存储的地址
pyautogui.write("D:\Web_DWS_project\picture")
# 按下回车键,要按两下才生效
pyautogui.press("enter")
pyautogui.press("enter")
# 要加等待,必须有
time.sleep(3)
# 鼠标移动到要选择的图片,点击选择这个图片
pyautogui.moveTo(329,267)
time.sleep(3)
pyautogui.doubleClick()
time.sleep(5)
driver.quit()

文件上传-非input标签文件选择-上传多个文件

import time
import pyautogui
from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.maximize_window()
driver.get("file:///D:/Web_DWS_project/test_case/多文件上传.html")
driver.find_element(By.CLASS_NAME,"custom-upload-button").click()
# 移动到地址栏
pyautogui.moveTo(295,65)
# 这里不加等待会导致下面点击进入失败
time.sleep(3)
# 点击进入
pyautogui.click()
# 清除原有地址
pyautogui.press("backspace")
# 键盘输入文件存储的地址
pyautogui.write("D:\Web_DWS_project\picture")
# 按下回车键,要按两下才生效
pyautogui.press("enter")
pyautogui.press("enter")

# 点击ctrl 下面才可以选择多个图片
pyautogui.keyDown("ctrl")
# 鼠标移动到要选择的第一个图片,点击选择这个图片
pyautogui.moveTo(329,267)
time.sleep(3)
pyautogui.click()

# 鼠标移动到要选择的第二个图片,点击选择这个图片
pyautogui.moveTo(732,275)
time.sleep(3)
pyautogui.click()

# 释放刚刚按下的ctrl
pyautogui.keyUp("ctrl")
# 鼠标移动到打开按钮,点击上传选择的两个图片   位置x:688,y:671
pyautogui.moveTo(688,671)
pyautogui.click()
#等待观察结果
time.sleep(10)
driver.quit()


对日期控件的处理

日期控件-input标签日期控件

input标签的日期控件可以使用send_keys(“****”)解决

import time
import pyautogui
from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.maximize_window()
driver.get("file:///D:Web_DWS_project/test_case/layui仿写页面/日期控件.html")

driver.find_element(By.XPATH,"//input[@class='layui-input' and @id='test1']").send_keys("2023-06-08")
time.sleep(3)
driver.quit()

日期控件-非input标签日期控件

触发控件后一个个定位点击

import time
import pyautogui
from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.maximize_window()
driver.get("file:///D:Web_DWS_project/test_case/layui仿写页面/日期控件.html")

# 点击触发非input标签的日期控件
driver.find_element(By.XPATH,"//div[@class='layui-input-inline']/div[@id='test28']").click()

# 选择年份-1999年
driver.find_element(By.XPATH,'//div[@id="layui-laydate31"]/div[1]/div[1]/div/span[1]').click()

el = driver.find_element(By.XPATH,'//div[@id="layui-laydate31"]//i[@class="layui-icon laydate-icon laydate-prev-y"]')
el.click()
el.click()

driver.find_element(By.XPATH,'//ul[@class="layui-laydate-list laydate-year-list"]/li[text()="1999年"]').click()

# 选择月份
driver.find_element(By.XPATH,'//div[@id="layui-laydate31"]/div[1]/div[1]/div/span[2]').click()

driver.find_element(By.XPATH,'//div[@id="layui-laydate31"]/div[1]/div[2]/ul/li[7]').click()


# 选择日期
driver.find_element(By.XPATH,'//div[@id="layui-laydate31"]/div[1]/div[2]/table/tbody/tr[5]/td[5]').click()

# 强制等待观察设置的日期是否正确
time.sleep(10)
driver.quit()

对滑动日期框架的处理

采用ActionChains(driver).scroll_to_element(el).perform(),滚动后click()

import time
import pyautogui
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.maximize_window()
driver.get("file:///D:Web_DWS_project/test_case/layui仿写页面/日期控件.html")

# 触发日期控件
driver.find_element(By.ID,'test4').click()

# 选择时
hours = driver.find_element(By.XPATH,'//*[@id="layui-laydate5"]/div[1]/div[2]/ul/li[1]/ol/li[22]')
ActionChains(driver).scroll_to_element(hours).perform()
hours.click()

# 选择分
minute = driver.find_element(By.XPATH,'//*[@id="layui-laydate5"]/div[1]/div[2]/ul/li[2]/ol/li[32]')
ActionChains(driver).scroll_to_element(minute).perform()
minute.click()

# 选择秒
second = driver.find_element(By.XPATH,'//*[@id="layui-laydate5"]/div[1]/div[2]/ul/li[3]/ol/li[51]')
ActionChains(driver).scroll_to_element(second).perform()
second.click()

# 点击确定按钮
driver.find_element(By.XPATH,'//*[@id="layui-laydate5"]/div[2]/div/span[3]').click()
# 强制等待观察设置的日期是否正确
time.sleep(10)
driver.quit()

input标签的文件上传可以使用send_keys(文件路径)解决
非input的用pyautogui处理
x,y = pyautogui.position()
pyautogui.moveTo(295,65)
pyautogui.click()
pyautogui.doubleClick()
pyautogui.press(“backspace”)
pyautogui.write(“###”)
pyautogui.keyDown(“ctrl”)
pyautogui.keyUp(“ctrl”)

1).input标签的日期控件可以使用send_keys(“****”)解决
2).非input标签日期控件,触发控件后一个个定位点击
3).对滑动日期框架的处理,采用ActionChains(driver).scroll_to_element(el).perform(),滚动后click()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值