python-selenium-web自动化-windows和linux
1. 安装浏览器和对应驱动
因为浏览器默认安装均为最新版本且找不到对应驱动,所有使用旧版浏览器并禁止自动更新。
1.1 windows版本和Linux-Ubuntu/Debian
谷歌旧版浏览器下载地址https://www.slimjet.com/chrome/google-chrome-old-version.php
谷歌驱动下载地址https://registry.npmmirror.com/binary.html?path=chromedriver/
1.2 linux-centos版本
谷歌旧版浏览器下载地址http://dist.control.lth.se/public/CentOS-7/x86_64/google.x86_64/
谷歌驱动下载地址https://registry.npmmirror.com/binary.html?path=chromedriver/
注意:浏览器和驱动版本必须相对应,且浏览器关闭更新(windows关闭更新教程连接最详细的教程,教你如何彻底关闭Chrome浏览器自动更新_关闭chrome检查更新_HarmonyOS体验官-春波的博客-CSDN博客)。
ubuntu版本太高会导致与旧版本浏览器不兼容,建议ubuntu 20版本。
1.3 centos下安装谷歌浏览器步骤
#安装谷歌浏览器
yum localinstall name.rpm
google-chrome --version #查看安装版本 google-chrome-stable --no-sandbox --headless --disable-gpu --screenshot https://www.baidu.com/ #测试安装结果
#如果出现screenshot.png则安装成功
#安装浏览器驱动
unzip chromedriver_linux64.zip
mv -f chromedriver /usr/bin/
chmod +x /usr/bin/chromedriver
#后续程序测试驱动安装成功
1.4ubuntu下安装谷歌浏览器步骤
#安装谷歌浏览器 sudo apt install ./name.deb google-chrome --version #查看安装版本 google-chrome-stable --no-sandbox --headless --disable-gpu --screenshot https://www.baidu.com/ #测试安装结果 #如果出现screenshot.png则安装成功 #安装浏览器驱动 unzip chromedriver_linux64.zip mv -f chromedriver /usr/bin/ chmod +x /usr/bin/chromedriver #后续程序测试驱动安装成功
2. 安装selenium库
pip install selenium #默认安装 pip show selenium #查看selenium版本号 #使用4.1.1/4.5.0版本,更高版本可能会导致浏览器闪退 pip --default-timeout=100 install selenium==4.1.1 -i https://pypi.tuna.tsinghua.edu.cn/simple
3. 基础代码
windows和centos在创建浏览器对象时存在差异。
3.1 windows版
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
import time
chrome_options = Options()
#忽略访问网站证书错误 chrome_options.add_argument('--ignore-certificate-errors') # 向 ChromeOptions 中添加启用麦克风的选项 chrome_options.add_argument("--use-fake-ui-for-media-stream=1") chrome_options.add_argument("--use-fake-device-for-media-stream") #设置隐藏窗口选项 #chrome_options.add_argument('--headless') # 隐藏浏览器窗口 #指定驱动的路径。如果路径配置在环境变量中,也可以不指定,那下方chrome_service也无需定义,同时webdrive.Chrome也有不同
#windows为指定驱动路径范例,下方linux代码为驱动路径在环境变量中范例。 chrome_driver_path = "D:/浏览器下载/chromedriver_win32/chromedriver.exe"
# 建立ChromeDriver的service对象
chrome_service = webdriver.chrome.service.Service(executable_path=chrome_driver_path)
#百度网页示例
def baidu_test():
# 通过service对象创建WebDriver对象1,可创建多个
driver_1 = webdriver.Chrome(service=chrome_service, options=chrome_options)
#driver_2 = webdriver.Chrome(services=chrome_service,options=chrome_options)
#打开百度网页
driver_1.get("https://www.baidu.com")
#定位到搜索框并赋值“李伟峰”,
#元素地址获取方法:浏览器--检查(F12)--选择到元素--右键单击元素代码--copy(复制)--copy Xpath(复制xpath)--可获取到元素路径//*[@id="kw"]
driver_1.find_element(By.XPATH,'//*[@id="kw"]').send_keys("李伟峰")
#定位到“百度一下”,点击
driver_1.find_element(By.XPATH,'//*[@id="su"]').click()
time.sleep(5) #暂停5秒
driver_1.close() #关闭此对象浏览器窗口
driver_1.quit() #关闭整个webdriver会话,driver_1和driver_2都关闭
def main():
baidu_test()
if __name__ == '__main__':
main()
3.2 Linux版
from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.by import By import time chrome_options = Options() chrome_options.add_argument('--disable-gpu') chrome_options.add_argument('--no-sandbox') # root用户不加这条会无法运行 #忽略访问网站证书错误 chrome_options.add_argument('--ignore-certificate-errors') # 向 ChromeOptions 中添加启用麦克风的选项 chrome_options.add_argument("--use-fake-ui-for-media-stream=1") chrome_options.add_argument("--use-fake-device-for-media-stream") #设置隐藏窗口选项 chrome_options.add_argument('--headless') # 隐藏浏览器窗口 #百度网页示例 def baidu_test(): # 通过service对象创建WebDriver对象1,可创建多个 driver_1 = webdriver.Chrome(chrome_options=chrome_options) #driver_2 = webdriver.Chrome(chrome_options=chrome_options) #打开百度网页 driver_1.get("https://www.baidu.com") #定位到搜索框并赋值“李伟峰”, #浏览器--检查(F12)--选择到元素--右键单击元素代码--copy(复制)--copy Xpath(复制xpath)--可获取到元素路径//*[@id="kw"] driver_1.find_element(By.XPATH,'//*[@id="kw"]').send_keys("李伟峰") #定位到“百度一下”,点击 driver_1.find_element(By.XPATH,'//*[@id="su"]').click()
print("成功") time.sleep(5) #暂停5秒 driver_1.close() #关闭此对象浏览器窗口 driver_1.quit() #关闭整个webdriver会话,driver_1和driver_2都关闭 def main(): baidu_test() if __name__ == '__main__': main()
4. 其他语句示例
#css定位是最佳推荐的定位元素,不仅仅效率高,而且针对复杂场景的多个元素定位需求会比xpath和其他元素定位更好定位
#浏览器--检查(F12)--选择到元素--右键单击元素代码--copy(复制)--copy selector(复制selector)-即可获取 driver.find_element(By.CSS_SELECTOR,'form > span.bg.s_ipt_wr.new-pmd.quickdelete-wrap')
driver.find_element(By.XPATH,'//*[@id="well-client"]/div/div[4]/input').clear() #clear清除值 driver.find_element(By.XPATH,'//*[@id="well-client"]/div/div[4]/input').send_keys("赋值") #send_keys赋值 driver.find_element(By.XPATH,'//*[@id="well-client"]/div/div[4]/input').text #获取按钮元素的文本值
#textContent获取标签之间的文本内容(html中有显示)。与.text效果相同driver.find_element(By.XPATH,'//*[@id="well-client"]/div/div[4]/input').get_attribute('textContent')
#获取输入框中的文本值,此文本内容不显示在html中,用此方法获取值driver.find_element(By.XPATH,'//*[@id="well-client"]/div/div[4]/input').get_attribute('value')
#get_attribute('innerHTML')会获取标签之间的完整 html
driver.find_element(By.XPATH,'//*[@id="well-client"]/div/div[4]/input').get_attribute('innerHTML')
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类