Selenium自动化(等待 / 弹窗处理 / 滚动条 / 多窗口处理 / Cookie处理)
一、等待
设置休眠时间(休眠3秒):
time.sleep(3)
智能等待(隐式等待):(一般放在打开项目的前面一行)
driver.implicitly_wait(10)
显示等待(不常用):
from selenium.webdriver.support.ui import WebDriverWait
WebDriverWait(5)
二、弹窗处理(提示框之类的)
alert / confirm / prompt 处理
text:返回alert/confirm.prompt中的文字内容
accept:点击确定按钮
dismiss:点击取消按钮,如果有取消按钮的话
send_keys:向prompt中输入文字
如:(删除商品时点击确定)
dri = driver.find_element_by_css_selector('##########')
dri[1].click()
time.sleep(3)
a = driver.switch_to.alert
a.accept()
用法:
driver.find_element_by_id("alert").click()
time.sleep(3)
driver.switch_to_alert().accept() # 点击弹窗的确定按钮
driver.find_element_by_id("confirm").click()
time.sleep(3)
driver.switch_to_alert().dismiss() # 点击弹窗的取消按钮
driver.find_element_by_id("prompt").click()
time.sleep(3)
driver.switch_to_alert().send_keys("123456") # 向弹窗prompt输入条中输入文字
time.sleep(3)
driver.switch_to_alert().accept()
备注:send_keys这个方法在chromedriver中输入后不会显示。
三、滚动条
For a in range(5) #6次
Js="document.documentElement.scroIITop=document.documentElement.scroIITop+100"
# +100表示幅度
driver.execute_script(js) #(调用执行)
time.sleep(3)
time.sleep(3)
四、多窗口处理
dangqian = driver.current_window_handle # 获取当前窗口句柄
# 再定位元素进行操作(点击等)
time.sleep(3)
suoyou = driver.window_handles # 获取所有窗口句柄
for hands in suoyou:
if hands != dangqian:
driver.switch_to.window(hands) # 通过句柄跳转窗口
driver.close() # 关闭新打开的窗口
driver.switch_to.window(dangqian) # 回到之前的窗口
五、Cookie处理
#第一段代码
#登录前获取cookies
ck_list=driver.get_cookies()
for ck in ck_list:
print(ck)
time.sleep(20)
print("----------手工登录----------") #(手动输入用户名密码)
#登录后获取cookie
for ck in ck_list:
print(ck)
#第二段代码 (name与value用第一段代码打印出来的两个)
driver.add_cookie({'name': 'xxxxxxxx','value': 'xxxxxxxxxxx'})
driver.add_cookie({'name': 'xxxxxxxxxxx','value': 'xxxxxxxxxxx'})
ck_list=driver.get_cookies()
for ck in ck_list:
print(ck)
time.sleep(3)
driver.get("http:\\登录成功的网页")
感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取