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 |