> 我们可以 使用python通过ssh或者api操作网络设备,但是有时候需要web操作,可以使用selenium来实现自动化操作 # selenium介绍 selenium 是一个web的自动化测试工具,不少学习功能自动化的同学开始首选selenium ,相因为它相比QTP有诸多有点: * 免费,也不用再为破解QTP而大伤脑筋 * 小巧,对于不同的语言它只是一个包而已,而QTP需要下载安装1个多G 的程序。 * 这也是最重要的一点,不管你以前更熟悉C、 java、ruby、python、或都是C# ,你都可以通过selenium完成自动化测试,而QTP只支持VBS * 支持多平台:windows、linux、MAC ,支持多浏览器:ie、ff、safari、opera、chrome * 支持分布式测试用例的执行,可以把测试用例分布到不同的测试机器的执行,相当于分发机的功能。 可以直接通过pip安装selenium ```python pip install selenium ``` ## selenium ide Selenium IDE实现为Firefox扩展,在测试脚本上提供记录和回放功能。 它允许测试人员以HTML,Java,Ruby,RSpec,Python, C# ,JUnit和TestNG等多种语言导出录制的脚本。 可以在Selenium RC或Webdriver中使用这些导出的脚本。 在使用selenium ide后,我们就不需要对html和web前端的便签进行定位操作,简化selenium使用,降低门槛,我们只要吧ide中记录的操作顺序使用脚本写入即可。 selenium同时支持chrome浏览器,下载和使用详细间官网文档 https://www.selenium.dev/selenium-ide/docs/en/introduction/getting-started 完成selnenium ide的chrome插件安装后,如下所示  使用效果如下:  只要记录对应的步骤即可,以下是打开一个baidu搜索的例子    以下就是对应元素的操作记录  ## webdrive Selenium WebDriver是Selenium Tool套件中最重要的组件。 最新版本“Selenium 2.0”与WebDriver API集成,提供更简单,更简洁的编程接口。 在WebDriver中,可以使用任何支持的编程语言开发测试脚本,并且可以在大多数现代Web浏览器中直接运行。WebDriver支持的语言包括C#,Java,Perl,PHP,Python和Ruby  根据自己的浏览器下载对应的webdrive,我用的是chrome https://chromedriver.chromium.org/downloads  # selnium简单使用 # 安装selenium ```shell script pip install selenium ``` ## 测试 创建baidu.py,输入以下内容 ```python from selenium import webdriver driver = webdriver.Chrome() driver.get('https://www.baidu.com') print(driver.title) driver.quit() ``` 如果执行报错,需要安装对应驱动 ## selenium3 浏览器驱动 当selenium升级到3.0之后,对不同的浏览器驱动进行了规范。如果想使用selenium驱动不同的浏览器,必须单独下载并设置不同的浏览器驱动。 Firefox浏览器驱动:geckodriver Chrome浏览器驱动:chromedriver , [taobao备用地址](https://npm.taobao.org/mirrors/chromedriver) IE浏览器驱动:IEDriverServer Edge浏览器驱动:MicrosoftWebDriver Opera浏览器驱动:operadriver PhantomJS浏览器驱动:phantomjs 选择的时候注意要选择与自己的浏览器匹配的版本下载 将下载的文件解压,放在如下位置 unzip chromedriver_linux64.zip /usr/bin/chromedriver 给予执行权限 chmod +x /usr/bin/chromedriver ## selenium 元素定位 提供了8种定位方式 - id - name - class name - tag name - link text - partial link text - xpath - css celector 这8种定位方式在selenium中的对应的方位为 - find_element_by_id() - find_element_by_name() - find_element_by_class_name() - find_element_by_tag_name() - find_element_by_link_text() - find_element_by_partial_link_text() - find_element_by_xpath() - find_element_by_css_selector() ## 定位方法的用法 假如我们有一个Web页面,通过前端工具(如,Firebug)查看到一个元素的属性是这样的。 ```html