Python+Selenium用法(二)


前提

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还停留在旧页面

'''第一种方法'''
#获取窗口句柄
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("文件路径")
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白瑟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值