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:\\登录成功的网页")