首页 > 其他分享 >Selenium4自动化测试1--Chrome浏览器和chromedriver

Selenium4自动化测试1--Chrome浏览器和chromedriver

时间:2024-05-08 18:56:06浏览次数:25  
标签:webdriver 浏览器 Chrome selenium driver chromedriver -- import chrome

selenium的介绍

Selenium是一个用于Web应用程序测试的强大工具,可以模拟用户在浏览器中的行为。它提供了一组功能丰富的工具和库,使您能够自动化浏览器操作,进行功能测试、回归测试和跨浏览器测试。

Selenium原理

 它需要模拟浏览器的操作所以需要用到浏览器和浏览器驱动。

一、安装WebDriver

查看chrome版本号,设置-帮助-关于Google chrome,找到版本号

 

 

Chrome浏览器驱动(chromedriver )下载地址

1.普通版本,请在

https://registry.npmmirror.com/binary.html?path=chromedriver/

2 最新版本,均为test版本,请在

https://googlechromelabs.github.io/chrome-for-testing/

找不到相应的版本号,就重新安装chrom浏览器使版本匹配

将浏览器驱动放入,开发依赖的环境中查看驱动版本号:

D:\ProgramData\Anaconda3\envs\py38>chromedriver -version

ChromeDriver 123.0.6312.122 (31f8248cdd90acbac59f700b603fed0b5967ca50-refs/branch-heads/6312@{#824})

二、牛刀小试

打开B站并搜索老虎it学习并点击查询
import time

from selenium import webdriver
from selenium.webdriver.common.by import By
# 定义一个driver的变量,用来接收实例化后的浏览器
driver = webdriver.Chrome()
# 使用get方法,访问网址
driver.get('https://www.bilibili.com/')
#1 找到输入框的位置,老虎资源分享
driver.find_element(By.CLASS_NAME,'nav-search-input').send_keys("老虎资源分享")
#2 找到搜索框的位置,点击搜索
driver.find_element(By.CLASS_NAME,'nav-search-btn').click()

time.sleep(3)

 这里如果谷歌浏览器和驱动版本不匹配总会出现报错,我们指定浏览器的位置,确保驱动和浏览器版本匹配。

import time

#pip install selenium
from selenium import webdriver
from selenium.webdriver.common.by import By
# 定义一个driver的变量,用来接收实例化后的浏览器
# 指定浏览器的位置,解决浏览器驱动和浏览器版本不匹配的问题
chrome_location = r'D:\pythonProject2023\SeleniumFirst\chrome-win64\chrome.exe'
options = webdriver.ChromeOptions()
options.binary_location = chrome_location
driver = webdriver.Chrome(options=options)

# 使用get方法,访问网址
driver.get('https://www.bilibili.com/')
#1 找到输入框的位置,输入老虎资源分享
driver.find_element(By.CLASS_NAME,'nav-search-input').send_keys("老虎资源分享")
#2 找到搜索框的位置,点击搜索
driver.find_element(By.CLASS_NAME,'nav-search-btn').click()

time.sleep(5)

 后续将持续更新,敬请期待

 

 

 

 

标签:webdriver,浏览器,Chrome,selenium,driver,chromedriver,--,import,chrome
From: https://www.cnblogs.com/yclh/p/18180659

相关文章

  • uniapp 新建文件
    uniapp新建文件支持ios和androidfunctioncreateFile(bases64,item,savedFilePathOne){//请求文件系统plus.io.requestFileSystem(plus.io.PRIVATE_DOC,function(fs){//letstorageAddress=fs.root.toURL();//创建文件fs.root.getFile......
  • VectSharp一个C#轻量级矢量图形库
    VectSharp是一个功能强大的C#库,专门用于创建矢量图形,包括文本,不依赖任何第三方,支持跨平台运行,包括Mac、Windows和Linux。使得开发者可以更容易地在他们的项目中集成矢量图形的生成和处理。https://github.com/arklumpus/VectSharp特点:内置字体:包含了14种标准字体,这些字体......
  • Mysql中的双路排序和单路排序
    在Mysql中使用orderby进行排序的时候,是可以使用到索引排序的,但是需要添加一些限制条件,例如:select*fromt_userwherename='张三'orderbyname;使用这种方式就可以使用到索引,同时使用limit也是可以使用到索引的select*fromt_userorderbyname;通过这种方式不会使用到索......
  • 【译】下一个大型编程语言是英语(自然语言)
    来源:every.to/chain-of-thought/i-spent-24-hours-with-github-copilot-workspacesGitHubCopilot就像程序员的自动完成功能。当你输入时,它猜测你想要完成什么,并建议它认为你将要编写的代码块。如果它猜对了——而它经常猜对——你只需按下Tab键,它会为你填写剩下的部分。......
  • Blender动画与云渲染:创造高质量作品的未来路径
    Blender作为开源的3D图形软件,在多个领域广受欢迎。但随着项目复杂度提升,传统渲染方式受限。云渲染技术的兴起突破了这些限制,为创作者提供了更自由、高效的创作环境。 一、Blender动画项目的挑战传统上,Blender动画渲染需要依赖昂贵的硬件设施和大量计算资源,尤其是在处理复杂场......
  • SSL error:0909006C:PEM routines:get_name:no start line: crypto/pem/pem_lib.c:745
    在anolis上编译内核时碰到-SSLerror:0909006C:PEMroutines:get_name:nostartline:crypto/pem/pem_lib.c:745的问题,#makemodules_installINSTALL/lib/modules/6.9.0-rc1/modules.orderINSTALL/lib/modules/6.9.0-rc1/modules.builtinINSTALL/lib/modules/6.9......
  • 线程池核心原理浅析
    前言由于系统资源是有限的,为了降低资源消耗,提高系统的性能和稳定性,引入了线程池对线程进行统一的管理和监控,本文将详细讲解线程池的使用、原理。为什么使用线程池池化思想线程池主要用到了池化思想,池化思想在计算机领域十分常见,主要用于减少资源浪费、提高性能等。池化思想......
  • 你知道什么是 MySQL Online DDL 吗?
    前言MySQL在进行DDL操作时,可能会产生表锁导致阻塞,影响用户的DML操作,而OnlineDDL指的是在DDL期间,允许用户进行DML操作。本文将详细讲解MySQL各版本的OnlineDDL。关于什么是DDL和DML操作,详细介绍见MySQL操作命令总结。1.什么是OnlineDDLOnlineDDL功......
  • org.apache.catalina.LifecycleException: Protocol handler start failed
    出现问题org.apache.catalina.LifecycleException:Protocolhandlerstartfailed,是因为端口号被占用1、按键盘上windows+R,输入CMD(不区分大小写)2、输入netstat-ano回车,查看所有进程(注意”-“前面有空格)3、输入netstat-ano|findstr"端口号"(注意”-“前面有空格)4、输入ta......
  • 跨域
    跨域:指的是浏览器不能执行其他网站的脚本,它是由浏览器的同源策略造成的。是浏览器对JavaScript施加的安全限制同源策略:是指协议,域名,端口都要相同,其中有一个不同都会产生跨域 都写在统一的一个配置类中,在gateway下建一个config包,CrosConfiguration,代码示例如下:@Configuratio......