selenium支持后台多平台多页面操作
selenium下载安装
1.先安装python环境和pytorch软件
在已有谷歌浏览器的情况下下载谷歌浏览器驱动(最好跟自己版本号对应,除非真的没有)
在服务中把谷歌相关的全部禁用,这样就不会自动更新,就不会导致下载的驱动后续无法使用的问题
浏览器开启
#保持浏览器打开状态(默认是代码执行完毕自动关闭)
browser1.add_experimental_option('detach', True)
如果不添加该段代码,则运行打开浏览器命令后会闪一下又马上关闭窗口
如果不写禁用沙盒模式,可能会出现兼容问题导致报错、闪退等情况
用函数封装打开浏览器的执行代码
def keepOpen():
#创建设置浏览器对象
browser1 =Options()
#对创建的浏览器对象进行实质设置
#禁用沙盒模式
browser1.add_argument('--no-sandbox')
#保持浏览器打开状态(默认是代码执行完毕自动关闭)
browser1.add_experimental_option('detach', True)
#创建并启动浏览器
broOpen = webdriver.Chrome(service=Service('chromedriver.exe'), options=browser1)
return broOpen
browser = keepOpen() #从方法中返回一个启动的浏览器
#浏览器对象.get :打开指定网址
browser.get('https://www.baidu.com/') #括号中传字符串
注意:字符串中的网址必须带上http/https协议,因为有的未必做了一个默认选项
打开的网页我们叫做标签页
注意:对象名.close只用于关闭当前标签页,如果你有多个标签页,默认只关闭当前这个。如果你只有一个标签页,则会把整个浏览器关闭
#关闭标签页
browser.close()
#彻底关闭浏览器
browser.quit()
# 浏览器最大化最小化
#最大化
browser.maximize_window()
#最小化
browser.minimize_window()
如下代码表示:先最大化维持2秒后再最小化
browser.maximize_window()
time.sleep(2)
#最小化
browser.minimize_window()
#浏览器打开位置
browser.set_window_position()
在这里括号中会有两个参数,x和y,直接输入并用逗号隔开即可。其中x表示距离左边的像素距离,y表示距离上面的像素距离
#浏览器打开尺寸
browser.set_window_size(1920,1080)
左边数字表示宽,右边数字表示高
#浏览器截图
browser.get_screenshot_as_file('文件保存路径和名字')
如果括号中为
browser.get_screenshot_as_file('photo.png')
表示存在当前路径,取名为photo
需要注意:浏览器截图即只截图浏览器的截图,并不会直接截到我们整个电脑桌面
#自动刷新当前网页
browser.refresh()
截图+刷新应用场景:设置间隔时间刷新,每刷新一次截一次图,节省人工盯盘截图的时间
# #浏览器截图
# browser.get_screenshot_as_file('photo.png')
time.sleep(2)
#自动刷新当前网页
browser.refresh()
获取元素
元素定位
#元素定位导包
from selenium.webdriver.common.by import By
元素:对于一个网页里,所有可点击可执行等的东西都叫元素,也叫组件
元素定位:通过f12找到你要捕捉的元素,再进行后续操作
#定位一个元素
browser.find_element(By.ID,'kw')
#该方法为获取一个元素,通过ID的形式,ID名为kw
从百度获取元素成功
也可能会出现有一个网页有多个相同元素值的情况
定位多个元素时,element要加s
#定位多个元素
inputElements=browser.find_elements(By.ID,'kw')
此时返回的是列表形式
总结:
定位单个元素,返回结果,找不到就报错
定位多个元素,返回列表,找不到返回空列表
查找元素法二:
在浏览器的控制台中直接输入代码
#浏览器查找多个元素
document.getElementsById('元素值')
这种方法可以用来查找是否有多个重复元素名等
元素交互
元素点击:用于按钮中
元素输入/清空:用于输入框中
注意:百度现在已经把input改成text