硒在哪里运行?

时间:2015-04-18 16:22:39

标签: selenium selenium-webdriver

我对硒感到非常困惑。

全新的自动化测试并努力争取立足硒。

http://www.seleniumhq.org/projects/webdriver/

我得到了编写测试的概念,并且使用量角器进行了角度测量,但是我需要在特定项目中使用selenium而不确定从哪里开始。

首先,我只想编写一些简单的客户端测试,但我不知道从哪里开始使用Selenium,我读了他们的文档,但并不是真的更聪明......

3 个答案:

答案 0 :(得分:1)

webdriver测试只是一个脚本,用许多兼容语言(java,python等)之一编写。该脚本可在任何计算机上运行。在开发期间,它通常在本地计算机上运行,​​但最终您的测试可以在持续集成服务器上运行。

Webdriver有两种操作模式:它可以在运行脚本的同一台机器上打开浏览器,或者它可以向selenium网格集线器发送请求,该集线器将在其中一个节点上打开浏览器。

作为一个简单的例子,这里是python中的selenium测试的完整工作示例(取自python selenium bindings Getting Started页面):

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("pycon")
elem.send_keys(Keys.RETURN)
assert "No results found." not in driver.page_source
driver.close()

如果你安装了python和selenium库,你可以将这个文件保存到" example_test.py"然后使用python example_test.py

从命令提示符运行它

这是一个类似的测试,这是javascript中的一个,取自WebDriverJS User's Guide。你可以像运行任何javascript程序一样运行它。

var webdriver = require('selenium-webdriver');

var driver = new webdriver.Builder().
   withCapabilities(webdriver.Capabilities.chrome()).
   build();

driver.get('http://www.google.com');
driver.findElement(webdriver.By.name('q')).sendKeys('webdriver');
driver.findElement(webdriver.By.name('btnG')).click();
driver.wait(function() {
 return driver.getTitle().then(function(title) {
   return title === 'webdriver - Google Search';
 });
}, 1000);

driver.quit();

答案 1 :(得分:1)

为了对您的问题给出一个有机的答案,当您运行硒Firefox浏览器测试时,它会启动一个本地特设的#Selenium网格集线器监听器"在30005的端口或测试开始时的某些东西。然后,您编写的代码通过向localhost:30005发送本地http请求,以JSON格式与该本地端口进行通信。 "网格中心"监听该端口知道如何与本地Web浏览器通信并通过回答通过该端口传递的命令来控制它。在测试结束时," selenium网格集线器监听端口"关闭。

如果你做了一些阅读并试着了解" Selenium Grid Hub"工作并了解" WebDriver Wire Protocol"然后它可以帮助您开始理解我上面解释的内容。

答案 2 :(得分:0)

请务必阅读官方的Selenium文档以获取参考资料,但如果您使用的是Java,则可以使用Conductor framework开始 它是一个特定于Java的DSL,因此不会与其他任何人合作。

测试看起来像这样:

@Config(url="http://google.com", browser=Browsers.CHROME)
public class MyTest {
  @Test
  public void testGoogle() {
    // a quick google search
    setText(By.name("q"), "something")
    .click("[name='btnG']");
  }
}