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')

复制代码

 

posted @   阿锋888  阅读(242)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类
点击右上角即可分享
微信分享提示