目录
1.时间等待方法
1、强制等待
2、 隐式等待
3、显式等待
2.下拉框操作方法
3.Alert 弹出框方法
4.附件上传操作方法
1.元素标签如果是input,则可以send_keys方法直接输入文件地址进行文件上传
2.使用pywinauto(只能在window平台上使用)
3.跨平台上传
导入定时等待库
from time import sleep
#或者
import time
time.sleep(10) # 表示强行等待10s。当执行下一句代码,这种等待方式时间到了就执行下一个语句,但不能保证在等待的时间内元素真正被加载了出来。
driver.implicitly_wait(30) #等待30s
表示在规定的时间内页面的所有元素都加载完了就执行下一步,否则一直等到时间截止,然后再继续下一步。
缺点:需要的元素已经加载出来了,但页面还没有加载完,需要继续等待页面加载完才能执行下一步操作。
from selenium.webdriver.support.wait import WebDriverWait #导入显性等待包
WebDriverWait,配合该类的有until()和until_not()方法,表示程序每隔x秒去判断一下指定的元素是否加载完,加载完了就执行下一步,否则继续每隔x秒去判断,指定时间截止。如果超时就会抛出异常。
WebDriverWait(driver, 10,0.5).until(driver.find_element( By.CSS_SELECTOR,""))
from selenium.webdriver.support.select import Select#导包
se=driver.find_element(By.ID, 'provise')#定位到元素
select=Select(se)#实例化
select.select_by_index(1)#通过索引选择下拉元素
select.select_by_value('bj')#通过下拉元素的value选择下拉元素
select.select_by_visible_text('上海')#通过下拉元素的文本内容选择下拉元素
除此之外其他一些不常用的有:
alert/confim/prompt,其中
text: 返回(获取)alert/confirm/prompt中的文字信息
accept():接受现有警告框
dismiss(): 放弃现有警告框
send_keys(keys_ToSend):发送文本至警告框
#切换到alert
alert = self.driver.switch_to.alert
print(alert.text)
sleep(2)
alert.accept()
#confirm弹框
self.driver.find_element_by_id('confirm').click()
confirm = self.driver.switch_to.alert
print(confirm.text)
sleep(3)
#确定
# confirm.accept()
#取消
confirm.dismiss()
#prompt弹框
self.driver.find_element_by_id('prompt').click()
prompt = self.driver.switch_to.alert
print(prompt.text)
prompt.send_keys('20')
sleep(3)
prompt.accept()
ele=driver.find_element_by_id("id")
ele.send_keys(r"c:\xxx.txt")
pip install pywinauto
from pywinauto.keyboard import send_keys
#找到元素,click(),调出文件上传的系统弹框界面
ele=driver.find_element_by_id("id")
ele.click()
time.sleep(2)
#输入文件路径
send_keys("文件路径")
#回车,上传文件
send_keys("{VK_RETURN}")
使用pyautogui跨平台
pip install pillow==6.2.2
pip insall pyautogui
pyautogui.write("d:xxx.txt")
pyautogui.press("enter")
pyperclip.copy(r"d:\用户\文件.txt")#文件路径
time.sleep(2)
pyautogui.hotkey("ctrl","v")#粘贴
pyautogui.press("enter",presses=2)#输入两次enter键,防止出错