前提
from selenium import webdriver
driver = webdriver.Chrome()
一、下拉框
from selenium.webdriver.support.select import Select #导包
#1、创建下拉框元素对象
ele = driver.find_element(By.ID, 'id')
#2、创建下拉框对象
se = Select(ele)
#3、创建操作下拉框对象
options = se.options #获取所有选项
se.select_by_index(0) #根据索引选中,从0开始
se.select_by_value('o1') #根据value属性选中
se.select_by_visible_text('o1') #根据文本属性选中
se.deselect_all() #多选时,取消所有选中
se.select_by_index(0) #多选时,根据索引取消选中
se.deselect_by_value('o1') #多选时,根据value属性取消选中
se.deselect_by_visible_text('o1') #多选时,根据文本属性取消选中
二、多窗口
点击某个按钮后,页面是在一个新的浏览器中出现,浏览器可能已经切换到新页面,而driver还停留在旧页面文章来源地址https://www.toymoban.com/news/detail-648379.html
'''第一种方法'''
#获取窗口句柄
windows = driver.window_handles
#切换窗口,新窗口通常为最后一个,若为其他位置则自行处理
driver.switch_to.window(windows[-1])
'''第二种方法'''
print(driver.current_window_handle) #当前窗口句柄
print(driver.window_handles) #所有句柄
h = driver.current_window_handle
hs = driver.window_handles
for i in hs:
if i!=h :
driver.switch_to.window(i)
三、弹窗
#点击弹窗
driver.find_element(By.ID, 'alert,confirm,prompt').click()
#获取弹窗对象
ele = driver.switch_to.alert #confirm,prompt
#操作弹窗
print(ele.text) #获取文本
ele.send_keys(' ') #弹窗输入
ele.accept() #确定
ele.dismiss() #取消
四、截图
driver.get_screenshot_as_file("图片保存路径")
#或者
#截取当前页面
driver.save_screenshot('photo.png')
#或者
#截屏并保存到文件中
element.screenshot('路径.png')
#截屏,以二进制保存在photo变量中
photo = element.screenshot_as_png
五、执行JS脚本
#执行js脚本
driver.execute_script("document.documentElement.scrollTop=1000")
#执行js脚本并获取执行结果
text = driver.execute_script("return document.getElementById('su').value")
print(text)
六、Cookie复用
说明
'''
cookie复用,跳过登录步骤
'''
#1、首次运行,手动登录jinwangzhan
#2、记录cookie信息到本地
cookie = driver.get_cookies()
#3、后续再次登录时,传入本地cookie信息,登录进网站
for i in cookie:
driver.add_cookie(i)
代码示例
#导包
import os.path
import yaml
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.support.wait import WebDriverWait
if not os.path.exists("resource"):
os.mkdir("resource")
#判断cookie是否存在,有则使用cookie跳过登录,无则手动登录
if os.path.exists("resource/cookie.yaml"):
#读取cookie,传入浏览器中
cookie = yaml.safe_load(open("resource/cookie.yaml"))
for i in cookie:
driver.add_cookie(i)
#进入网站
driver.get("网址")
else:
#扫码登录,等待页面加载
WebDriverWait(driver, 60).until(expected_conditions.url_contains("随便一个条件"))
#存入cookie信息到本地
cookie = driver.get_cookies()
with open("resource/cookie.yaml", "w") as f:
yaml.safe_dump(cookie, f)
time.sleep(3)
driver.quit()
七、滚动条操作
'''
selenium中并没有直接操作的方法,可通过JavaScript脚本
'''
js = driver.window.scrollTo(num1, num2) #上边距,垂直滚动条
driver.execute_script(js)
八、上传文件
driver.find_element(By.XPATH, 'xpath').send_keys("文件路径")
文章来源:https://www.toymoban.com/news/detail-648379.html
到了这里,关于Python+Selenium用法(二)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!