使用Python的Selenium WebDriver:示例教程

Selenium支持Python,因此可以与Python一起用作Selenium WebDriver进行测试。

  • 与其他编程语言相比,Python简单得多。
  • PythonAPI使能够通过Selenium与浏览器连接。
  • Selenium将标准Python命令发送到不同的浏览器,尽管它们的浏览器设计各不相同。

可以在不同的操作系统上使用Firefox、Chrome、IE等的Python脚本运行Selenium。

在本Selenium Python教程中,将了解-

  • Python是什么?
  • 什么是Selenium?
  • 为什么在Selenium中选择Python而不是Java
  • 如何在Eclipse中安装和配置PyDev
  • 如何用Python在Selenium中创建测试脚本

Python是什么?

Python是一种面向对象的高级脚本语言。与任何其他编程语言相比,它的语法复杂性更低。

什么是Selenium?

Selenium是测试Web应用程序的工具。例如,可以通过各种方式完成此操作

  • 允许它轻触按钮
  • 在结构中输入内容
  • 浏览一下站点,检查是否一切“正常”,以此类推。

为什么在Selenium中选择Python而不是Java

与Java相比,Python更适合与Selenium一起使用的几点是,

  1. 与Python程序相比,Java程序的运行速度往往较慢。
  2. Java使用传统的大括号开始和结束块,而Python使用缩进。
  3. JAVA使用静态类型,而Python是动态类型的。
  4. 与Java相比,Python更简单、更紧凑。

如何在Eclipse中安装和配置PyDev

PyDev是Eclipse的Python开发环境。

步骤1)转到Eclipse Marketplace。帮助>安装新软件

下一步是为Eclipse安装“pydev IDE”。

步骤2)在本步骤中,

  1. 搜索“http://pydev.org/updates”in Work with and Then“
  2. 选择所有列出的项目,然后单击两次下一步
  3. 接受许可协议并单击Finish。

步骤3)可能会遇到安全警告,单击“仍要安装”。

步骤4)现在,在此步骤中,将设置首选项。借助Preference选项,可以根据项目需要使用Python。

转到“窗口”>“首选项”>“PyDev”>“解释器”>“Python解释器”。

让我们设置默认的Python解释器。这就像需要更改解释器名称一样,单击Browse for python/PyPy exe按钮。

步骤5)在此步骤中,给出Python的“解释器名称”和“exe”文件路径。

  1. 点击“浏览”,找到安装Python的python.exe。
  2. 单击“确定”按钮。
  3. 选择所有文件夹,然后单击确定
  4. 单击“Apply and Close”(应用并关闭)。

步骤6)在Python中创建一个新项目。在这一步中,

  1. 右键单击PyDev package Explorer>New。
  2. 选择选项其他。

  1. 选择“PyDev>PyDev项目”。
  2. 按“下一步”按钮。

  1. 命名项目
  2. 单击“完成”。

可以看到创建了新的Python(PyDev)项目。

步骤7)在本步骤中,

创建‘PyDev Project’之后,将创建一个新的Python包。

  1. 右键单击Project>New>PyDev Package。
  2. 命名包,然后单击Finish。

步骤8)如果在下面的屏幕截图中看到,则创建了一个新的包。

创建新包后,下一步是创建PyDev Module。因此,将不需要重新编写程序。

步骤9)创建新的PyDev模块。右键单击Package>New>PyDev模块。

命名模块,然后单击“Finish”。

选择空模板,然后单击“确定”。

步骤10)使用Python编写Selenium代码,如下所示

如何用Python在Selenium中创建测试脚本

在这个使用Python的Selenium WebDriver示例中,我们使用Firefox驱动程序实现了“Facebook登录页面”的自动化。

Selenium Python示例1:登录到Facebook

    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    user_name = "YOUR EMAILID"
    password = "YOUR PASSWORD"
    driver = webdriver.Firefox()
    driver.get("https://www.facebook.com")
    element = driver.find_element_by_id("email")
    element.send_keys(user_name)
    element = driver.find_element_by_id("pass")
    element.send_keys(password)
    element.send_keys(Keys.RETURN)
    element.close()

代码说明

  • 代码行1:从Selenium模块导入Webdriver
  • 代码行2:从Selenium模块导入密钥
  • 代码行3:user是一个变量,我们将用它来存储username值。
  • 代码行4:变量“password”将用于存储密码值。
  • 代码行5:在该行中,我们通过将“Firefox”创建为对象来初始化它。
  • 代码行6:“driver.get方法”将导航到URL给定的页面。Webdriver将等待页面完全加载(即,“onload”时机已经结束),然后才将控制权返回给测试或脚本。
  • 代码行7:在该行中,我们找到了必须写入“email”的文本框的元素。
  • 代码行8:现在我们将值发送到电子邮件部分
  • 代码行9:密码相同
  • 代码行10:将值发送到密码部分
  • 代码行11: element.send_keys(Keys.RETURN) 用于在插入值后按Enter键
  • 代码行12:关闭

输入的用户名“guru99”和密码的值。

Facebook页面将使用电子邮件和密码登录。页面打开(见下图)

示例2:登录Facebook并检查标题

在此示例中,

  • 我们将打开一个登录页面。

  • 填写必填字段“用户名”和“密码”。

  • 检查页面标题

  • 
    
        from selenium import webdriver
        from selenium.webdriver.support.ui import WebDriverWait
    
        ##### 1) 打开 Firefox 
    
        browser = webdriver.Firefox()
    
        ##### 2) 导航到facebook
    
        browser.get("http://www.facebook.com")
    
        ##### 3) 搜索和输入电子邮件或电话
    
        username = browser.find_element_by_id("email")
        password = browser.find_element_by_id("pass")
        submit   = browser.find_element_by_id("loginbutton")
        username.send_keys("YOUR EMAILID")
        password.send_keys("YOUR PASSWORD")
    
        ##### 4)点击登录
    
        submit.click()
        wait = WebDriverWait( browser, 5 )
        page_title = browser.title
        assert page_title == "Facebook"

代码说明:

  • 代码行1-2:导入Selenium包
  • 代码行4:通过创建对象初始化Firefox
  • 代码行6:获取登录页面(Facebook)
  • 代码行8-10:获取用户名、密码输入框和提交按钮。
  • 代码行11-12:在用户名和密码输入框中输入数据
  • 代码行14:单击“Submit”按钮
  • 代码行15:创建超时为5秒的等待对象。
  • 代码行16:从“Browser”对象捕获标题。
  • 代码行17:使用“facebook”测试捕获的标题字符串

总结:

  • Selenium是一个开源的基于Web的自动化工具。
  • 使用Python语言结合Selenium进行测试。与任何其他编程语言相比,它的冗长和易于使用要少得多
  • Python API使能够通过Selenium与浏览器连接
  • Selenium可以将标准Python命令发送到不同的浏览器,尽管它们的浏览器设计各不相同。

IT赶路人

专注IT知识分享