1. Simple Usage
    如果你已经安装了Selenium Python,你可以通过Python这样使用:

    #coding=gbk
    '''
    Created on 2014年5月6日
    
    @author: user
    '''
    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    
    driver = webdriver.Firefox()
    driver.get("http://www.python.org")
    assert "Python" in driver.title
    elem = driver.find_element_by_name("q")
    elem.send_keys("selenium")
    elem.send_keys(Keys.RETURN)
    driver.close()

    (如果设置了Python的环境变量,保存后可以直接双击运行)

  2. Walk through of the example(剖析上例)
    Selenium WebDriver模块提供了所有的webdriver实现。目前webdriver支持:火狐,Chrome,IE和远程。键值类提供键值:RETURN,F1,ALT等。
    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys

    然后,火狐中的WebDriver实例被创建:

    driver = webdriver.Firefox()

    driver.get方法将导航到给定的URL页面。WebDriver将等到页面完全加载在返回控制权到你的测试脚本之前。值得一提的是,如果页面大量的采用AJAX,那么WebDriver也许不知道什么时候完全加载。

    driver.get("http://www.python.org")

    下一行代码断言确认页面title是否含有“Python”这个单词内容:

    assert "Python" in driver.title

    WebDriver提供了很多通过find_element_by_*来寻找元素的方法,例如,输入文本元素可以放置使用find_element_by_name方法,它的name属性。

    elem = driver.find_element_by_name("q")

    接下来,我们模拟按键输入按键值,这类似于使用键盘输入键。特殊键可以使用按键类从selenium.webdriver.common.keys导入。

    elem.send_keys("selenium")
    elem.send_keys(Keys.RETURN)

    最后浏览器将被关闭:

    driver.close()
  3. Using Selenium to write tests

    Selenium 主要用于编写测试用例。Selenium包本身不提供测试工具/框架。您可以使用Python的unittest模块编写测试用例。其他选项作为一种工具/框架有py.test和nose。

    在本章中,我们使用单元测试作为选择的框架。这里改变的用例,它使用unittest模块。这里是对python.org搜索功能的一个用例:

    #coding=gbk
    '''
    Created on 2014年5月6日
    
    @author: user
    '''
    import unittest
    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    
    class PythonOrgSearch(unittest.TestCase):
    
        def setUp(self):
            self.driver = webdriver.Firefox()
    
        def test_search_in_python_org(self):
            driver = self.driver
            driver.get("http://www.python.org")
            self.assertIn("Python", driver.title)
            elem = driver.find_element_by_name("q")
            elem.send_keys("selenium")
            elem.send_keys(Keys.RETURN)
    
        def tearDown(self):
            self.driver.close()
    
    if __name__ == "__main__":
        unittest.main()

    (如果是使用pydev来开发,那么要设置PyDev的code analysis 的undefined为 warning)

    运行结果如下:

    Finding files... done.
    Importing test modules ... done.
    
    ----------------------------------------------------------------------
    Ran 1 test in 31.453s
    
    OK
  4. Walk through of the example
    最初,所需要的基本模块需要被导入。 unittest模块是内置在Python中基于Java的JUnit的。该模块提供了用于组织测试用例的框架。该selenium.webdriver模块提供了所有的webdriver实现。目前支持的实现的webdriver:火狐,Chrome,IE和远程。
    import unittest
    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys

    这个测试用例类是从unittest.TestCase的继承。从TestCase类继承的方式是告诉unittest模块:这是一个测试案例:

    class PythonOrgSearch(unittest.TestCase):

    setUp是初始化的一部分,这个方法将在写测试用例之前调用每一个测试方法。下面是创建一个火狐浏览器WebDriver的用例:

    def setUp(self):
        self.driver = webdriver.Firefox()

    这是测试用例的方法。这种方法中的第一行创建一个本地参考setUp方法创建的驱动程序对象。

    def test_search_in_python_org(self):
        driver = self.driver

    driver.get方法将导航到给定的URL页面。WebDriver将等到页面完全加载在返回控制权到你的测试脚本之前。值得一提的是,如果页面大量的采用AJAX,那么WebDriver也许不知道什么时候完全加载。

    driver.get("http://www.python.org")

    下一行代码断言确认页面title是否含有“Python”这个单词内容:

    self.assertIn("Python", driver.title)

    WebDriver提供了很多通过find_element_by_*来寻找元素的方法,例如,输入文本元素可以放置使用find_element_by_name方法,它的name属性。

    elem = driver.find_element_by_name("q")

    接下来,我们模拟按键输入按键值,这类似于使用键盘输入键。特殊键可以使用按键类从selenium.webdriver.common.keys导入。

    elem.send_keys("selenium")
    elem.send_keys(Keys.RETURN)

    提交页面后,你应该得到的结果按搜索,如果有的话。

    tearDown方法将每个测试方法之后被调用。这步完成所有的清理行动。在目前的方法中,在浏览器窗口是关闭的。默认情况下,大多数浏览器将完全退出。

    def tearDown(self):
        self.driver.close()

    最后是模板代码内容:

    if __name__ == "__main__":
        unittest.main()

<译>Selenium Python Bindings 2 - Getting Started的更多相关文章

  1. <译>Selenium Python Bindings 1 - Installation

    Installation Introduction Selenium Python bindings 提供了一个简单的API来使用Selenium WebDriver编写使用功能/验收测试.通过Sel ...

  2. <译>Selenium Python Bindings 5 - Waits

    如今,大多数的Web应用程序使用AJAX技术.当页面加载到浏览器,页面中的元素也许在不同的时间间隔内加载.这使得元素很难定位,如果在DOM中的元素没有呈现,它将抛出ElementNotVisibleE ...

  3. <译>Selenium Python Bindings 6 - WebDriver API

    本章涉及Selenium WebDriver的所有接口. Recommended Import Style 推荐的导入风格如下: from selenium import webdriver 然后,你 ...

  4. <译>Selenium Python Bindings 4 - Locating Eelements

    有各种不同的策略来定位页面中的元素.你可以使用最合适定位方式用于你的用例.Selenium提供了以下方法来定位页面中的元素: find_element_by_id find_element_by_na ...

  5. <译>Selenium Python Bindings 3 - Navigating

    当你想要通过webdriver导航到一个链接,正常的方式点是通过调用get方法: driver.get("http://www.google.com") Interacting w ...

  6. selenium python bindings 元素定位

    1. 辅助 Firepath Firefox是所有做前端的必不可少的浏览器因为firebug的页面元素显示很清晰.用selenium 去定位元素的时候Firefox还有一个非常友好的工具就是firep ...

  7. [译]Selenium Python文档:目录

    作者:Baiju Muthukadan 协议:本文档采用知识共享署名 - 共享4.0国际许可. 原英文网址:http://selenium-python.readthedocs.io/index.ht ...

  8. [译]Selenium Python文档:一、安装

    1.1.简介 Selenium Python为使用Selenium WebDriver来编写功能/验证测试提供了一个简单的API接口.通过Selenium Python API,你可以以一种非常直观的 ...

  9. [译]Selenium Python文档:二、初步开始

    2.1.简单使用 如果已经安装好了Selenium Python,你就可以像下面这样编写Python代码来使用它了: from selenium import webdriver from selen ...

随机推荐

  1. Oracle 学习笔记(二)

    1.创建用户,一般是具有dba权限的用户才能使用: create user 用户名 identified by 密码; 2.删除用户: drop user 用户名,注意,如果用户拥有对象,则不能直接删 ...

  2. hdu1233

    http://acm.hdu.edu.cn/showproblem.php?pid=1233 最小生成树,kruskal算法 #include<stdio.h> #include<m ...

  3. C++Builder和VC的比较

    C++Builder和VC的比较 其实很久以前我就想写这篇文章,其原因一方面是因为笔者深深感觉到C++ Builder的确是一个先进与强大的程式开发工具,但更最重要的一点是,我深信C++ Builde ...

  4. tomcat作为windows服务启动失败解决方法

    再使用如下方法注册windows服务时,出现问题: set CATALINA_BASE=E:\tomcat\tomcat-web-server set CATALINA_HOME=E:\tomcat\ ...

  5. Huge CSV and XML Files in Python, Error: field larger than field limit (131072)

    Huge CSV and XML Files in Python January 22, 2009. Filed under python twitter facebook pinterest lin ...

  6. JPA和Hibernate的区别

    JPA Java Persistence API,是Java EE 5的标准ORM接口,也是ejb3规范的一部分. Hibernate,当今很流行的ORM框架,是JPA的一个实现,但是其功能是JPA的 ...

  7. Codeforces Round #206 (Div. 1)B(记忆化)

    这题刚开始理解错题意了 以为只能往右和下走 这题挺好的 看题解看了N久啊 二维的DP 第一维表示走到第几步 可以画一个正方形 以左上角斜着划线 第i步走的点只能是第i条线上的点 而dp的第二维 就表示 ...

  8. Nlog Layout

    Nlog.config <targets>     <target type="Console" name="trace" layout=&q ...

  9. 实际举例C#引用类型和值类型的区别<网摘>

    我们都知道,c#的两大数据类型分别为值类型和引用类型.很多人或许闭着眼睛都能说出值类型包括简单类型.结构体类型和枚举类型,引用类型包括自定义类.数组.接口.委托等,但是当被问及到二者之间的联系和区别, ...

  10. UVa 10969 (圆与圆之间的覆盖问题) Sweet Dream

    题意: 有n个按先后顺序放置的不同大小不同位置的圆,求所有可见圆弧的长度. 分析: 这道题应该是大白书上例题 LA 2572 (求可见圆盘的数量) Kanazawa 的加强版,整体框架都差不多. 对于 ...