selenium开始使用硒


备注

Selenium是一个功能强大的多语言命令库(C#,Haskell,Java,JavaScript,Objective-C,Perl,PHP,Python,R和Ruby),允许程序员自动化浏览器交互。这对开发人员测试应用程序非常有用。

Selenium提供以下方法:

  • 在网页中查找元素
  • 单击元素
  • 将字符串发送到元素
  • 导航到网页
  • 切换到同一浏览器窗口中的其他选项卡
  • 截取网页的屏幕截图

使用这些方法,开发人员可以进行自动测试检查:

  • 如果元素在页面中,并且对用户可见
  • 搜索或登录表单
  • 按钮或交互式元素
  • 检查元素的值或属性

Selenium在webdrivers中运行,它类似于普通的Web浏览器,但允许Selenium与它们进行交互。 Selenium测试通常会打开开发人员正在测试的任何浏览器的新驱动程序实例,这始终是一个干净的平台。这样,在运行Selenium测试时,开发人员不必担心以前的cookie或影响其应用程序结果的浏览器缓存。

在无头模式下运行webdriver时,Selenium也可以工作。

版本

发布日期
3.4.0 2017年4月11日
3.3 2017年4月7日
3.2 2017年2月27日
3.1 2017年2月13日
3.0.1 2016年11月19日
3.0 2016年10月11日

通过终端(BASH)设置python Selenium

最简单的方法是使用pipVirtualEnv 。 Selenium也需要python 3. *

使用以下命令安装virtualenv:

$: pip install virtualenv
 

创建/输入Selenium文件的目录:

$: cd my_selenium_project
 

在Selenium文件的目录中创建一个新的VirtualEnv:

$: virtualenv -p /usr/bin/python3.0 venv
 

激活VirtualEnv:

$: source venv/bin/active
 

你现在应该看到每个bash行开头的(venv)。使用pip安装Selenium:

$: pip install selenium
 

Selenium默认配备FireFox驱动程序。
如果你想在谷歌浏览器中运行Selenium,也可以这样做:

$: pip install chromedriver
 

您现在拥有版本控制的VirtualEnv。要确保一切设置正确:

启动python:

$: python
 

打印出来:

Python 2.7.10 (default, Jul 14 2015, 19:46:27) 
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
 

创建一个新的webdriver(在本例中为chromedriver),然后转到www.google.com:

>>> from selenium import webdriver
>>> driver = webdriver.Chrome()
>>> driver.get("https://www.google.com")
 

关闭驱动程序和python解释器:

>>> driver.quit()
>>> quit()
 

停用VirtualEnv:

$: deactivate
 

如果行driver = webdriver.Chrome() 抛出错误:

  • 确保您还安装了Chrome浏览器。如果不这样做,Selenium chromedriver无法访问Chrome二进制文件。
  • webdriver.Chrome()也可以为您的chromedriver位置获取参数。如果您使用pip安装它,请尝试(在Mac上) driver = webdriver.Chrome("./venv/selenium/webdriver/chromedriver")

C#中的简单Selenium示例

//Create a new ChromeDriver
IWebDriver driver = new ChromeDriver();

//Navigate to www.google.com
driver.Navigate().GoToUrl("https://www.google.com");

//Find the WebElement of the search bar
IWebElement element = driver.FindElement(By.Name("q"));

//Type Hello World into search bar
element.SendKeys("Hello World");

//Submit the input
element.Submit();

//Close the browser
driver.Quit();
 

Java中的简单Selenium测试

下面的代码是使用selenium的简单java程序。以下代码的旅程是

  1. 打开Firefox浏览器
  2. 打开谷歌页面
  3. 打印Google页面的标题
  4. 找到搜索框位置
  5. 将值作为Selenium传递到搜索框中
  6. 提交表格
  7. 关闭浏览器
package org.openqa.selenium.example;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import java.util.concurrent.TimeUnit;

public class Selenium2Example  {
    public static void main(String[] args) {
        // Create a new instance of the Firefox driver
        WebDriver driver = new FirefoxDriver();

        // An implicit wait is to tell WebDriver to poll the DOM for a certain amount of time 
        // when trying to find an element or elements if they are not immediately available. 
        // The default setting is 0. Once set, the implicit wait is set for the life of the WebDriver object instance.   
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

        // Maximize the browser window to fit into screen
        driver.manage().window().maximize();
        
        // Visit Google
        driver.get("http://www.google.com");

        // Check the title of the page
        System.out.println("Page title is: " + driver.getTitle());

        // Find the text input element by its name
        WebElement element = driver.findElement(By.name("q"));

        // Enter something to search for
        element.sendKeys("Selenium!");

        // Now submit the form. WebDriver will find the form for us from the element
        element.submit();

        //Close the browser
        driver.quit();
    }
}
 

在python中进行简单的硒测试

from selenium import webdriver

# Create a new chromedriver
driver = webdriver.Chrome()

# Go to www.google.com
driver.get("https://www.google.com")

# Get the webelement of the text input box
search_box = driver.find_element_by_name("q")

# Send the string "Selenium!" to the input box
seach_box.send_keys("Selenium!")

# Submit the input, which starts a search
search_box.submit()

# Wait to see the results of the search
time.sleep(5)

# Close the driver
driver.quit()