Selenium客户端驱动程序

@高效码农  April 29, 2019

======================

Selenium客户端驱动程序

介绍

Selenium 2,又名 WebDriver,它的主要新功能是集成了 Selenium 1.0 以及 WebDriver(WebDriver 曾经是 Selenium 的竞争对手)。也就是说 Selenium 2 是 Selenium 和 WebDriver 两个项目的合并,即 Selenium 2 兼容 Selenium,它既支持 Selenium API 也支持 WebDriver API。 WebDriver是一个用来进行复杂重复的web自动化测试的工具。意在提供一种比Selenium1.0更简单易学,有利于维护的API。它没有和任何测试框架进行绑定,所以他可以很好的在单元测试和main方法中调用。一旦创建好一个Selenium工程,你马上会发现WebDriver和其他类库一样:它是完全独立的,你可以直接使用而不需要考虑其他配置,这个Selenium RC是截然相反的。

selenium包用于自动化Python的Web浏览器交互。

首页http://www.seleniumhq.org
文件selenium package API <https://seleniumhq.github.io/selenium/docs/api/py/api.html>_
Dev https://github.com/SeleniumHQ/Selenium
PyPI https://pypi.org/project/selenium/
IRC freenode上的#selenium 频道

支持多种浏览器/驱动程序(Firefox,Chrome,Internet Explorer)以及远程协议。

支持的Python版本

  • Python 2.7,3.4 +

安装

如果你的系统上有pip <https://pip.pypa.io/>_,你可以简单地安装或升级Python绑定::

pip install -U selenium

或者,您可以从PyPI <https://pypi.org/project/selenium/#files>_(例如selenium-3.14.0.tar.gz)下载源代码分发,解压缩它,然后运行::

python setup.py install

注意:您可能需要考虑使用virtualenv <http://www.virtualenv.org/>_来创建隔离的Python环境。

驱动程序

Selenium需要驱动程序与所选浏览器进行交互。火狐,
例如,需要geckodriver <https://github.com/mozilla/geckodriver/releases>_,需要先安装才能运行以下示例。确保它在你的PATH中,例如,将它放在/ usr / bin/ usr / local / bin中。

如果不遵守此步骤,将会出现错误`selenium.common.exceptions.WebDriverException:消息:'geckodriver'可执行文件需要在PATH中。

其他支持的浏览器将有自己的驱动程序可用。下面是一些比较流行的浏览器驱动程序的链接。

Chrome:https://sites.google.com/a/chromium.org/chromedriver/downloads
Edge:https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
Firefox:https://github.com/mozilla/geckodriver/releases
Safari:https://webkit.org/blog/6900/webdriver-support-in-safari-10/

Example0:

*打开一个新的Firefox浏览器
*在给定的URL加载页面

    from selenium import webdriver

    browser = webdriver.Firefox()
    browser.get('http://seleniumhq.org/')

Example1:

*打开一个新的Firefox浏览器
*加载雅虎主页
*搜索“seleniumhq”
*关闭浏览器

    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys

    browser = webdriver.Firefox()

    browser.get('http://www.yahoo.com')
    assert 'Yahoo' in browser.title

    elem = browser.find_element_by_name('p')  # Find the search box
    elem.send_keys('seleniumhq' + Keys.RETURN)

    browser.quit()

Example2:

Selenium WebDriver通常用作测试Web应用程序的基础。这是一个使用Python标准unittest <http://docs.python.org/3/library/unittest.html>_ library的简单示例:

    import unittest
    from selenium import webdriver

    class GoogleTestCase(unittest.TestCase):

        def setUp(self):
            self.browser = webdriver.Firefox()
            self.addCleanup(self.browser.quit)

        def testPageTitle(self):
            self.browser.get('http://www.google.com')
            self.assertIn('Google', self.browser.title)

    if __name__ == '__main__':
        unittest.main(verbosity=2)

Selenium Server(可选)

对于普通的WebDriver脚本(非远程),不需要Java服务器。

但是,要使用Selenium Webdriver Remote或传统的Selenium API(Selenium-RC),您还需要运行Selenium服务器。服务器需要Java Runtime Environment(JRE)。

单独下载服务器,网址为:http://selenium-release.storage.googleapis.com/3.14/selenium-server-standalone-3.14.0.jar

从命令行运行服务器::

java -jar selenium-server-standalone-3.14.0.jar

然后运行Python客户端脚本。

使用The Source Luke!

在线查看源代码:

官方:https://github.com/SeleniumHQ/selenium/tree/master/py


添加新评论