(python)undetected_chromedriver浏览器自动化测试

这篇具有很好参考价值的文章主要介绍了(python)undetected_chromedriver浏览器自动化测试。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

        undetected_chromedriver 是一个用于绕过 Web 自动化中的 ChromeDriver 检测的 Python 库。它提供了更好的隐匿性和稳定性.

适用于以下场景:

  1. Web 自动化测试:undetected_chromedriver 可以用于模拟用户在浏览器中的操作进行自动化测试,例如填写表单、点击按钮、抓取页面内容等。由于其对驱动程序的检测绕过能力,可以帮助您避免被网站检测到并防止启动时的安全问题。

  2. 网页数据爬取:undetected_chromedriver 在进行网页数据爬取时也能够提供更高的隐匿性。它可以模拟浏览器行为,如加载 JavaScript、执行 Ajax 请求等,从而获取动态生成的内容。

  3. 反爬虫绕过:某些网站会使用检测机制来识别和阻止爬虫程序。undetected_chromedriver 可以绕过这些检测机制,使得爬虫程序更难被网站检测到,从而提高爬取数据的成功率。

注意

        无论在何种场景下使用 undetected_chromedriver,都应该遵守相关法律法规并尊重网站的访问政策。在进行任何自动化操作或爬取数据之前,最好阅读并了解目标网站的使用条款、隐私政策和 robots.txt 文件,并确保您的行为符合相关规定。

使用到的第三方库

undetected_chromedriver

是一个用于绕过 Web 自动化中的 ChromeDriver 检测的 Python 库。

  1. unhandled_prompt_behaviour(prompt_handler: Optional[Callable] = None):设置如何处理未处理的提示框。默认情况下,当出现未处理的提示框时,将引发 UnexpectedAlertPresentException 异常。您可以使用此方法设置回调函数来处理这些提示框。

  2. disable_csp():禁用 Chrome 的内容安全策略(CSP)。CSP 是一种安全机制,它可以限制浏览器加载和执行的资源和代码,从而减少潜在的安全漏洞。但是,在某些情况下,CSP 可能会阻止您访问所需的资源,因此您可能需要禁用它。

  3. enable_automation():启用 Chrome 的自动化标识。这个方法会启用一个旗标,来帮助您避免被一些网站检测为自动化脚本并被阻止访问。

  4. start_session():启动一个新的浏览器会话,并返回与之对应的 Session 实例。Session 对象提供了许多有用的方法,例如 visit()find()execute_script(),可以用于操作浏览器并与网站交互。

  5. clear_cache():清除浏览器缓存。这可以帮助您避免特定网站缓存数据的影响,并确保您获得最新的页面内容。

  6. 其他常用的 Selenium 方法:例如 get()find_element()find_elements()execute_script() 等。

Selenium 

selenium.webdriver.common.by提供了一组用于定位网页元素的方法。

  1. By.ID:通过元素的 id 属性进行定位。
  2. By.NAME:通过元素的 name 属性进行定位。
  3. By.CLASS_NAME:通过元素的 class 属性进行定位。
  4. By.TAG_NAME:通过元素的标签名称进行定位。
  5. By.LINK_TEXT:通过链接文本进行定位。
  6. By.PARTIAL_LINK_TEXT:通过链接文本的部分内容进行定位。
  7. By.CSS_SELECTOR:通过 CSS 选择器进行定位。
  8. By.XPATH:通过 XPath 表达式进行定位。

代码样例

运行环境

  • 开发环境 Anaconda3 python3.9
  • selenium  4.12.0
  • undetected-chromedriver  3.5.3
  • 浏览器 谷歌浏览器 版本 78.0.3904.108(正式版本) (64 位)
  • 驱动 chromedriver_win32.zip (需要和浏览器版本适配,下载地址如下) 

https://cdn.npmmirror.com/binaries/chromedriver/78.0.3904.105/chromedriver_win32.zip

应用场景

访问百度网站,查询一个问题'undetected_chromedriver 如何使用',获取返回的搜索信息,将其中的标题和链接信息进行输出.

代码

from undetected_chromedriver import Chrome, ChromeOptions
from selenium.webdriver.common.by import By

# 创建 ChromeOptions 对象并配置
# r"D:\chromedriver.exe"
options = ChromeOptions()
# options.add_argument("--headless")  # 设置无头模式
# 创建 Chrome 对象 路径最好是设置绝对路径,排查路径的问题
driver = Chrome(options=options, driver_executable_path=r"D:\chromedriver.exe")

# 打开百度首页
driver.get("https://www.baidu.com")

# 输入要查询的问题
query = "undetected_chromedriver 如何使用"
search_box = driver.find_element(By.CSS_SELECTOR, "input[id='kw']")
search_box.send_keys(query)

# 提交搜索表单
search_button = driver.find_element(By.CSS_SELECTOR, "input[id='su']")
search_button.click()

# 等待搜索结果加载完成
driver.implicitly_wait(5)  # 等待5秒钟,如果结果在该时间内加载完成则继续执行

# 获取搜索结果
results = driver.find_elements(By.CSS_SELECTOR, "h3[class='c-title t t tts-title'] a")
for result in results:
    title = result.text
    url = result.get_attribute("href")
    print(f"标题:{title}")
    print(f"链接:{url}")
    print()

# 关闭浏览器会话
driver.quit()

一些常见的问题和解决方法

无法启动 Chrome 浏览器

如果在使用 undetected_chromedriver 启动浏览器时遇到问题,首先确保您已正确安装 Chrome 浏览器和对应版本的 ChromeDriver。您可以从 Chrome 官方网站下载最新版本的浏览器和 ChromeDriver。另外,请确保您的操作系统与所使用的 ChromeDriver 版本兼容。

Chrome 版本与 ChromeDriver 版本不匹配

undetected_chromedriver 需要与您已安装的 Chrome 浏览器版本相对应的 ChromeDriver 版本。当 ChromeDriver 版本与 Chrome 版本不匹配时,可能会出现错误或启动失败。请确保两者版本匹配,并及时更新 ChromeDriver。

无法绕过自动化检测

某些网站可能会检测到您使用的是自动化工具,并采取措施阻止您的访问。尽管 undetected_chromedriver 可以提供一定程度上的自动化检测绕过能力,但无法保证绝对的成功。您可以尝试使用其他技术手段,如更改 User-Agent、模拟人类的浏览行为等,来增加绕过检测的成功率。

性能问题

使用 undetected_chromedriver 可能会引入一些额外的性能开销,因为它需要执行一些逻辑来绕过检测。如果您发现脚本运行速度较慢,可以尝试优化代码或考虑直接使用原生的 ChromeDriver 进行操作。

不支持的功能

undetected_chromedriver 是一个针对特定用例的库,其中某些功能可能与标准的 Selenium API 不兼容或不支持。如果您需要使用某些高级功能或特定的 Selenium 特性,需要参考 undetected_chromedriver 的文档,了解其是否支持相关功能。文章来源地址https://www.toymoban.com/news/detail-757127.html

到了这里,关于(python)undetected_chromedriver浏览器自动化测试的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ubuntu安装Google Chrome 浏览器和ChromeDriver

    要在Ubuntu上安装Google Chrome浏览器和ChromeDriver,可以按照以下步骤操作: 1. 安装Google Chrome 浏览器 下载Google Chrome 的最新版本。 使用 dpkg 安装下载的deb包。 如果在安装过程中遇到了依赖问题,您可以使用下面的命令来自动修复它。 此时,可以在Ubuntu中找到Google Chrome浏览器,

    2024年02月11日
    浏览(50)
  • 使用Selenium和ChromeDriver操作浏览器获取动态数据

    在Web开发中,有时需要爬取动态生成的数据。这些数据无法通过传统的爬虫工具获取,因为它们需要在浏览器中执行JavaScript代码才能生成。在这种情况下,可以使用Selenium和ChromeDriver来模拟人类用户的行为,操作浏览器并获取动态数据。 为了使用Selenium和ChromeDriver操作浏览器

    2024年02月09日
    浏览(33)
  • selenium-chromedriver如何安装(自动模拟浏览器程序)

    selenium是一种自动模拟浏览器的程序,它可以代替你的手去完成一些反复无聊的点击以及其他动作!很多小伙伴不知道selenium怎么用,这里讲解一下selenium的chromedriver的安装方法: 首先要下载一个谷歌浏览器,我直接把谷歌浏览器的官网给搬过来了:https://www.google.cn/chrome/ 我们

    2024年02月13日
    浏览(33)
  • 找不到和chrome浏览器版本不同的chromedriver的解决方法

    某一天我很久没有chromedriver之后,发现我的google版本是下图这样 打开这个网站下载新版本的chromedriver,我发现没有103.0.5060.114。虽然我不知道为什么没有但是问题总是要解决啊! chromedriver下载地址:http://chromedriver.storage.googleapis.com/index.html 于是我下载了103.0.5060.134版本的chrom

    2024年02月11日
    浏览(38)
  • Selenium根据Chrome浏览器版本自动下载/更新驱动chromedriver.exe

    个人经常使用到 selenium 来控制浏览器进行相关的操作,但是 Chrome浏览器 经常会自动更新,导致已有的 驱动程序chromedriver.exe 失效,需要重新下载。 以前尝试过禁止Chrome浏览器更新,但是这并不是很好的解决方案。 于是换了个方向,既然Chrome浏览器会自动更新,那么在我使

    2024年02月09日
    浏览(52)
  • 使用selenium,但chrome无法启动,需要安装浏览器对应版本(最新)的chromedriver

    使用selenium无法启动chrome,代码 报错如下: 安装地址 查询了浏览器版本:117.0.5927 但是国内的镜像网找不到,只更新到114版本 需要安装驱动,点击了最下面的网址 https://chromedriver.chromium.org/home 如图为有效信息 - 点击跳转: https://googlechromelabs.github.io/chrome-for-testing (点击这里

    2024年02月11日
    浏览(50)
  • CentOS7 启动谷歌浏览器 java+Selenium+chrome+chromedriver

    前言:自己想使用该技术实现自动化抓取音乐,目前在window上运行成功,需要在Linux Centos服务上跑,配置上出现了许多问题,特此记录。 参考文档:CentOS7 安装Selenium+chrome+chromedriver+java_远方丿的博客-CSDN博客  我们明确的是,在window上是安装了chrome和自带了chromeDriver的,之所

    2024年02月11日
    浏览(53)
  • 谷歌浏览器使用selenium的驱动chromedriver 116~118版本,解决版本不匹配问

    谷歌浏览器使用selenium的驱动chromedriver 116~118版本,解决版本不匹配问 获取不到 chromedriver 高版本吗? https://googlechromelabs.github.io/chrome-for-testing/#stable

    2024年02月07日
    浏览(42)
  • Selenium安装WebDriver:ChromeDriver与谷歌浏览器版本快速匹配_最新版120

    最近在使用通过selenium操作Chrome浏览器时,安装中遇到了Chrome版本与浏览器驱动不匹配的的问题,在此记录安装下过程,如何快速找到与谷歌浏览器相匹配的ChromeDriver驱动版本。 1. 确定Chrome版本 我们首先确定自己的Chrome版本 Chrome设置-关于Chrome  我的是最近安装的官网上当前

    2024年02月04日
    浏览(44)
  • chrome浏览器版本和Chromedriver不匹配问题解决办法selenium.common.exceptions.SessionNotCreatedException

    执行selenium抓取的时候,报下面错误: 这是因为浏览器的版本和Chromedriver的版本不匹配,Chrome浏览器如果没有关闭自动更新,会一直出现这个问题,比较麻烦,建议关闭Chrome浏览器自动更新,参照另外一篇文章:Chrome浏览器关闭自动更新 谷歌镜像版本下载链接:https://regist

    2024年02月16日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包