基于selenium的web自动化环境的搭建与使用

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 17:02   908   0

Selenium环境的安装主要就是安装两样东西: 客户端库浏览器驱动

安装客户端库

不同的编程语言选择不同的Selenium客户端库,对应Python语言来说,Selenium客户端库的安装非常简单,用 pip 命令即可,打开终端,运行如下命令

python3 -m pip install selenium

安装浏览器驱动

浏览器驱动 是和 浏览器对应的,不同的浏览器 需要选择不同的浏览器驱动。

目前主流的浏览器中,谷歌 Chrome 浏览器对 Selenium自动化的支持更加成熟一些,推荐使用 Chrome浏览器。

谷歌浏览器下载地址:https://www.google.cn/chrome/

谷歌浏览器驱动下载地址:https://chromedriver.storage.googleapis.com/index.html

需要注意的是:驱动和浏览器的版本号越接近越好,但是略有差别(比如72和73),通常也没有什么问题。

下面的代码, 可以自动化的 打开Chrome浏览器,并且自动化打开百度网站:

from selenium import webdriver
 
# 创建 WebDriver 对象,指明使用chrome浏览器驱动
wd = webdriver.Chrome('/Users/yhx/chromedriver') #'/Users/yhx/chromedriver'是浏览器驱动所在的路径
 
# 调用WebDriver 对象的get方法 可以让浏览器打开指定网址
wd.get('https://www.baidu.com')

其中,下面这行代码,就会运行浏览器驱动,并且运行Chrome浏览器

wd = webdriver.Chrome(r'd:\webdrivers\chromedriver.exe')
注意,等号右边 返回的是 WebDriver 类型的对象,我们可以通过这个对象来操控浏览器,比如 打开网址、选择界面元素等。

而下面这行代码,就是使用 WebDriver 的 get 方法 打开网址百度:

wd.get('https://www.baidu.com')
执行上面这行代码时,自动化程序就发起了 打开百度网址的 请求消息 ,通过浏览器驱动, 给 Chrome浏览器。Chome浏览器接收到该请求后,就会打开百度网址,通过浏览器驱动, 告诉自动化程序 打开成功。

selenium的常用操作:

wd.get(url)
在当前浏览器会话中访问传入的url地址
用法:
wd.get('https://www.baidu.com')
 
wd.close()
关闭浏览器当前窗口
 
wd.quit()
退出webdriver并关闭所有窗口
 
wd.refresh()
刷新当前页面
 
wd.title
获取当前页的标题
 
wd.page_source
获取当前页渲染后的源代码
 
wd.current_url
获取当前页面的url
 
wd.window_handles
获取当前会话中所有窗口的具柄

常见选择元素的方法:

方法

作用

find_element_by_id()通过id查找
find_elements_by_class_name()通过class属性查找
find_element_by_tag_name()通过标签名查找
find_element_by_css_selector()通过css选择器查找
find_element_by_name()通过name属性进行查找
find_element_by_link_text()通过链接文本查找
find_element_by_partial_link_text()通过链接文本的部分匹配查找
find_element_by_xpath()通过Xpath查找

远程自动化

单机版

如果不考虑remote模式,开启一个Selenium浏览器实例应该是类似这样:

driver = selenium.webdriver.Chrome()

但是Remote模式下,就要稍微复杂一点儿:

driver = selenium.webdriver.remote.webdriver.WebDriver(command_executor="http://127.0.0.1:4444/wd/hub",desired_capabilities=DesiredCapabilities.Chrome)

下载selenium server :http : //selenium-release.storage.googleapis.com/3.141/selenium-server-standalone-3.141.0.jar

或者在:http://selenium-release.storage.googleapis.com/index.html 下载较新的版本

记得启动selenium-server,直接java执行即可:

java -jar selenium-server-standalone-3.141.0.jar

多机版

真正的remote模式,需要定义两个角色:hub(即Master)、node(即Slave),selenuim远程自动化必须满足以下条件:

  • 本地hub 主机与远程node 主机之间可以相互ping 通
  • 远程主机必须安装运行脚本的浏览器及驱动(如,chrome 浏览器及chromedriver.exe 驱动)
  • 远程主机必须安装java 环境
  • 远程主机必须安装selenium server

操作步骤如下:(保证操作的两个测试机的ip在同一网段里面)

启动本地hub 主机(本地主机IP 为:192.168.2.151):

# 首先进入selenuim server所在的目录,然后执行
java -jar selenium-server-standalone-3.141.0.jar -role hub

启动远程主机( IP 地址:192.168.2.181):

远程主机启动node 方式如下:

java -jar selenium-server-standalone-3.141.0.jar -role node -port 5555 -hub http://192.168.2.151/grid/register


(设置的端口号为:5555 ,指向的hub ip 为192.168.2.151)

然后再运行自动化脚本即可。

多个node的远程控制,可参考:https://blog.csdn.net/chonghe1987/article/details/100734382

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP