找回密码
 立即注册
首页 python Python-Web 查看内容
在本文中,我们将教您如何安装自己的自动化环境并使用Selenium / WebDriver和测试库(如selenium-webdriver for Node)运行自己的测试。我们还将研究如何将本地测试环境与上一篇文章中讨论的商业工具集成。


先决条件:
熟悉核心HTMLCSSJavaScript语言; 了解跨浏览器测试自动化测试的高级原则
目的:
展示如何在本地设置Selenium测试环境并使用它运行测试,以及如何将其与Sauce Labs和BrowserStack等工具集成。



Selenium是最流行的浏览器自动化工具。还有其他方法,但使用Selenium的最佳方式是通过WebDriver,这是一个强大的API,构建在Selenium之上,并调用浏览器自动化它,执行诸如“打开此网页”,“移动”等操作页面上的这个元素“,”点击此链接“,”查看链接是否打开此URL“,等等。这是运行自动化测试的理想选择。


如何安装和使用WebDriver取决于您要用于编写和运行测试的编程环境。大多数流行的环境都有一个包或框架,可以安装WebDriver以及使用这种语言与WebDriver通信所需的绑定,例如Java,C#,Ruby,Python,JavaScript(Node)等。请参阅  设置Selenium-WebDriver项目有关不同语言的Selenium设置的更多详细信息。


不同的浏览器需要不同的驱动程序才能允许WebDriver与之通信并对其进行控制。有关从何处获取浏览器驱动程序的详细信息,请参阅Selenium支持的平台等。


我们将介绍使用Node.js编写和运行Selenium测试,因为它易于上手,并且是前端开发人员更熟悉的环境。


注意:如果您想了解如何将WebDriver与其他服务器端环境一起使用,请查看Selenium支持的平台以获取一些有用的链接。


在Node中设置Selenium


  • 首先,设置一个新的npm项目,如上一章中的设置节点和npm中所述。称之为不同的东西,比如selenium-test。
  • 接下来,我们需要安装一个框架,以允许我们从Node内部使用Selenium。我们将选择selenium的官方selenium-webdriver,因为文档似乎是最新的,并且维护得很好。如果你想要不同的选项,webdriver.ionightwatch.js也是不错的选择。要安装selenium-webdriver,请运行以下命令,确保您位于项目文件夹中:

npm install selenium-webdriver
注意:即使您之前安装了selenium-webdriver并下载了浏览器驱动程序,仍然应该遵循这些步骤。你应该确保一切都是最新的。


接下来,您需要下载相关的驱动程序,以允许WebDriver控制您要测试的浏览器。您可以在selenium-webdriver页面上找到从何处获取它们的详细信息(请参阅第一部分中的表格。)显然,某些浏览器是特定于操作系统的,但我们将坚持使用Firefox和Chrome,因为它们适用于所有主要操作系统。


  • 下载最新的GeckoDriver(适用于Firefox)和ChromeDriver驱动程序。
  • 将它们打包到一个相当容易导航的地方,就像你的家庭用户目录的根目录一样。
  • 将chromedriver和geckodriver驱动程序的位置添加到系统PATH变量中。这应该是从硬盘根目录到包含驱动程序的目录的绝对路径。例如,如果我们使用的是Mac OS X机器,我们的用户名是bob,我们将驱动程序放在主文件夹的根目录中,路径就是/Users/bob。

注意:重申一下,您添加的路径PATH需要是包含驱动程序的目录的路径,而不是驱动程序本身的路径!这是一个常见的错误。


PATH在Mac OS X /大多数Linux系统上设置变量:


打开您的.bash_profile(或.bashrc)文件(如果您看不到隐藏文件,则需要显示它们,请参阅在Mac OS X中显示/隐藏隐藏文件在Ubuntu中显示隐藏文件夹)。


将以下内容粘贴到文件的底部(更新路径,因为它实际上在您的计算机上):

#Add WebDriver browser drivers to PATH

export PATH=$PATH:/Users/bob

保存并关闭此文件,然后重新启动终端/命令提示符以重新应用Bash配置。

PATH通过在终端中输入以下内容,检查新路径是否在变量中:
echo $PATH

你应该看到它在终端打印出来。

要PATH在Windows上设置变量,请按照如何将新文件夹添加到系统路径中的说明进行操作?

好的,让我们尝试一下快速测试,以确保一切正常。

在项目目录中创建一个名为的新文件google_test.js:

给它以下内容,然后保存:
var webdriver = require('selenium-webdriver'),
    By = webdriver.By,
    until = webdriver.until;

var driver = new webdriver.Builder()
    .forBrowser('firefox')
    .build();

driver.get('http://www.google.com');

driver.findElement(By.name('q')).sendKeys('webdriver');

driver.sleep(1000).then(function() {
  driver.findElement(By.name('q')).sendKeys(webdriver.Key.TAB);
});

driver.findElement(By.name('btnK')).click();

driver.sleep(2000).then(function() {
  driver.getTitle().then(function(title) {
    if(title === 'webdriver - Google Search') {
      console.log('Test passed');
    } else {
      console.log('Test failed');
    }
    driver.quit();
  });
});

在终端中,确保您在项目文件夹中,然后输入以下命令:
node google_test
您应该会看到Firefox的一个实例自动打开!Google应自动加载到标签中,应在搜索框中输入“webdriver”,然后点击搜索按钮。WebDriver将等待2秒钟; 然后访问文档标题,如果是“webdriver - Google Search”,我们将返回一条消息,声称测试已通过。然后,WebDriver将关闭Firefox实例并停止。


一次在多个浏览器中测试


也没有什么可以阻止你同时在多个浏览器上运行测试。我们来试试吧!


在项目目录中创建另一个名为的新文件google_test_multiple.js。您可以随意更改我们添加的其他浏览器的引用,删除它们等,具体取决于您可以在操作系统上测试的浏览器。您需要确保在系统上设置了正确的浏览器驱动程序。就.forBrowser()其他浏览器在方法中使用的字符串而言,请参阅浏览器枚举参考页面。


给它以下内容,然后保存:
var webdriver = require('selenium-webdriver'),
    By = webdriver.By,
    until = webdriver.until;

var driver_fx = new webdriver.Builder()
    .forBrowser('firefox')
    .build();

var driver_chr = new webdriver.Builder()
    .forBrowser('chrome')
    .build();

searchTest(driver_fx);
searchTest(driver_chr);

function searchTest(driver) {
  driver.get('http://www.google.com');
  driver.findElement(By.name('q')).sendKeys('webdriver');

  driver.sleep(1000).then(function() {
    driver.findElement(By.name('q')).sendKeys(webdriver.Key.TAB);
  });

  driver.findElement(By.name('btnK')).click();

  driver.sleep(2000).then(function() {
    driver.getTitle().then(function(title) {
      if(title === 'webdriver - Google Search') {
        console.log('Test passed');
      } else {
        console.log('Test failed');
      }
      driver.quit();
    });
  });

  
}

在终端中,确保您在项目文件夹中,然后输入以下命令:
node google_test_multiple
如果您使用的是Mac并且决定测试Safari,则可能会收到“无法创建会话”的错误消息:您必须在Safari的“开发”菜单中启用“允许远程自动化”选项才能通过WebDriver控制Safari。 “ 如果你得到这个,请按照给定的说明再试一次。


所以在这里我们像以前一样完成了测试,除了这次我们把它包装在一个函数中,searchTest()。我们为多个浏览器创建了新的浏览器实例,然后将每个浏览器实例传递给该函数,以便在所有三个浏览器上执行测试!


好玩吧?让我们继续,更详细地了解WebDriver语法的基础知识。


WebDriver语法速成课程


我们来看看webdriver语法的一些关键功能。有关更完整的详细信息,请参阅selenium-webdriver JavaScript API参考以获取详细参考,以及Selenium主文档的Selenium WebDriverWebDriver:高级用法页面,其中包含可从不同语言编写的多个示例。


开始新的测试


要启动新测试,您需要包含以下selenium-webdriver模块:
var webdriver = require('selenium-webdriver'),
    By = webdriver.By,
    until = webdriver.until;

接下来,您需要使用new webdriver.Builder()构造函数创建驱动程序的新实例。这需要将forBrowser()方法链接到它上以指定要使用此构建器测试的浏览器,以及build()实际构建它的方法(有关这些功能的详细信息,请参阅Builder类参考)。
var driver = new webdriver.Builder()
    .forBrowser('firefox')
    .build();

请注意,可以为要测试的浏览器设置特定的配置选项,例如,您可以在forBrowser()方法中设置要测试的特定版本和操作系统:
var driver = new webdriver.Builder()
    .forBrowser('firefox', '46', 'MAC')
    .build();

您还可以使用环境变量设置这些选项,例如:
SELENIUM_BROWSER=firefox:46:MAC

让我们创建一个新的测试,让我们在讨论它时探索这段代码。在selenium测试项目目录中,创建一个名为的新文件quick_test.js,并向其中添加以下代码:
var webdriver = require('selenium-webdriver'),
    By = webdriver.By,
    until = webdriver.until;

var driver = new webdriver.Builder()
    .forBrowser('firefox')
    .build();

获取要测试的文档


要加载实际要测试的页面,可以使用get()先前创建的驱动程序实例的方法,例如:
driver.get('http://www.google.com');

您可以使用任何URL指向您的资源,包括file://用于测试本地文档的URL:
driver.get('file:///Users/chrismills/git/learning-area/tools-testing/cross-browser-testing/accessibility/fake-div-buttons.html');

要么:
driver.get('http://localhost:8888/fake-div-buttons.html');

但最好使用远程服务器位置,以便代码更灵活 - 当您开始使用远程服务器运行测试时(请参阅后面的内容),如果您尝试使用本地路径,代码将会中断。

将此行添加到quick_test.js现在的底部:
driver.get('http://mdn.github.io/learning-area/tools-testing/cross-browser-testing/accessibility/native-keyboard-accessibility.html')

与文档交互


现在我们有一个要测试的文档,我们需要以某种方式与它进行交互,这通常涉及首先选择一个特定的元素来测试一些东西。您可以在WebDriver中以多种方式选择UI元素,包括ID,类,元素名称等。实际选择由findElement()方法完成,该方法接受选择方法作为参数。例如,要按ID选择元素:
var element = driver.findElement(By.id('myElementId'));

通过CSS查找元素的最有用方法之一 - By.css方法允许您使用CSS选择器选择元素。

quick_test.js现在在代码底部输入以下内容:
var button = driver.findElement(By.css('button:nth-of-type(1)'));

测试你的元素


有许多方法可以与您的Web文档和元素进行交互。您可以从 WebDriver文档上的获取文本值开始查看有用的常见示例。


如果我们想在我们的按钮中获取文本,我们可以这样做:
button.getText().then(function(text) {
  console.log('Button text is \'' + text + '\'');
});

立即添加quick_test.js。

确保您在项目目录中,尝试运行测试:
node quick_test.js

您应该会在控制台中看到按钮的文本标签。

让我们做一些更有用的事情。删除上一个代码条目,然后在底部添加此行:
button.click();

尝试再次运行测试; 将单击该按钮,并显示alert()弹出窗口。至少我们知道按钮正在工作!

您也可以与弹出窗口进行交互。将以下内容添加到代码的底部,然后再次尝试测试:
var alert = driver.switchTo().alert();

alert.getText().then(function(text) {
  console.log('Alert text is \'' + text + '\'');
});

alert.accept();

接下来,让我们尝试将一些文本输入到其中一个表单元素中。添加以下代码并尝试再次运行测试:
var input = driver.findElement(By.id('input1'));
input.sendKeys('Filling in my form');

您可以使用webdriver.Key对象的属性提交无法用普通字符表示的按键。例如,上面我们使用此构造在提交之前从表单输入中进行选项卡:
driver.sleep(1000).then(function() {
  driver.findElement(By.name('q')).sendKeys(webdriver.Key.TAB);
});

等待完成的事情


有些时候你会想让WebDriver在继续之前等待完成某些事情。例如,如果您加载新页面,则在尝试与其任何元素进行交互之前,您将需要等待页面的DOM完成加载,否则测试可能会失败。


google_test.js例如,在我们的测试中,我们包含了这个块:
driver.sleep(2000).then(function() {
  driver.getTitle().then(function(title) {
    if(title === 'webdriver - Google Search') {
      console.log('Test passed');
    } else {
      console.log('Test failed');
    }
  });
});

该sleep()方法接受一个值,该值指定等待的时间(以毫秒为单位) - 该方法返回一个在该时间结束时解析的promise,此时then()执行代码。在这种情况下,我们使用方法获取当前页面的标题getTitle(),然后根据其值来返回通过或失败消息。

我们也可以在测试中添加一个sleep()方法quick_test.js- 尝试将最后一行代码包装在一个块中,如下所示:
driver.sleep(2000).then(function() {
  input.sendKeys('Filling in my form');
  input.getAttribute("value").then(function(value) {
    if(value !== '') {
      console.log('Form input editable');
    }
  });
});

WebDriver现在将等待2秒,然后填写表单字段。然后我们通过使用getAttribute()它来检索它的value属性值来测试它的值是否被填充(即不是空的),并且如果它不为空则将消息打印到控制台。
注意:还有一个被调用的方法wait(),它在一段时间内反复测试一个条件,然后继续执行代码。这也使用了util库,它定义了与之一起使用的常见条件wait()


使用后关闭司机


在完成测试运行后,您应该关闭所有已打开的驱动程序实例,以确保最终不会在计算机上打开大量流氓浏览器实例!这是使用该quit()方法完成的。完成后,只需在驱动程序实例上调用它即可。quick_test.js现在将此行添加到测试的底部:
driver.quit();

运行它时,您现在应该看到测试执行,并在文本完成后再次关闭浏览器实例。这对于使用大量浏览器实例不会弄乱您的计算机非常有用,尤其是如果您有太多导致计算机速度变慢的计算机。

测试最佳实践


关于编写测试的最佳实践已经写了很多。您可以在测试设计注意事项中找到一些很好的背景信息。通常,您应该确保您的测试是:


  • 使用良好的定位器策略:当您与文档交互时,请确保使用不太可能更改的定位器和页面对象 - 如果您有要测试的可测试元素,请确保它具有稳定性可以使用CSS选择器选择的页面上的ID或位置,它不会随着下一次站点迭代而改变。你想让你的测试尽可能不易碎,也就是说,当事情发生变化时,它们不会破坏。
  • 编写原子测试:每个测试只应测试一件事,这样可以很容易地跟踪测试文件测试的标准。作为一个例子,google_test.js我们上面看到的测试非常好,因为它只测试一件事 - 搜索结果页面的标题是否设置正确。我们可以努力为它提供一个更好的名称,以便在我们添加更多谷歌测试时更容易弄清楚它的作用。也许results_page_title_set_correctly.js会稍好一点?
  • 编写自主测试:每个测试都应该独立完成,而不依赖于其他测试。

另外,我们应该提一下测试结果/报告 - 我们一直在使用简单的console.log()语句在上面的例子中报告结果,但这都是用JavaScript完成的,所以你可以使用你想要的任何测试运行和求助系统,不管是Mocha / /其他一些组合。

例如,尝试mocha_test.js在项目目录中制作我们示例的本地副本。把它放在一个名为的子文件夹中test。此示例使用一长串promise来运行测试中所需的所有步骤 - WebDriver使用的基于承诺的方法需要解析它才能正常工作。

通过在项目目录中运行以下命令来安装mocha测试工具:

npm install --save-dev mocha

您现在可以test使用以下命令运行测试(以及放在目录中的任何其他内容):
mocha --no-timeouts

你应该包含这个--no-timeouts标志,以确保你的测试不会因为Mocha的任意超时(3秒)而失败。
注意saucelabs-sample-test-frameworks包含几个有用的示例,说明如何设置测试/断言工具的不同组合。


运行远程测试


事实证明,在远程服务器上运行测试并不比在本地运行它们困难得多。您只需要创建驱动程序实例,但需要指定一些其他功能,包括要测试的浏览器的功能,服务器的地址以及访问它所需的用户凭据(如果有)。


BrowserStack


让Selenium测试在BrowserStack上远程运行很容易。您需要的代码应遵循以下模式。


我们来写一个例子:


在项目目录中,创建一个名为的新文件bstack_google_test.js。


给它以下内容:
var webdriver = require('selenium-webdriver'),
    通过= webdriver.By,
    until = webdriver.until;

//输入功能
var capabilities = {
   'browserName':'Firefox',
   'browser_version':'56 .0 beta',
   'os':'OS X',
   'os_version':'Sierra',
   '决议':'1280x1024',
   'browserstack.user':' YOUR-USER-NAME',
   'browserstack.key':' YOUR-ACCESS-KEY',
   'browserstack.debug':'true',
   'build':'第一次建造'
};

var driver = new webdriver.Builder()。
  usingServer( 'http://hub-cloud.browserstack.com/wd/hub')。
  withCapabilities(能力)。
  建立();

driver.get( 'http://www.google.com');
driver.findElement(By.name( 'Q'))的SendKeys( '的webdriver');

driver.sleep(1000).then(function(){
  driver.findElement(By.name( 'Q'))的SendKeys(webdriver.Key.TAB)。
});

。driver.findElement(By.name( 'btnK'))点击();

driver.sleep(2000).then(function(){
  driver.getTitle()。then(function(title){
    if(title ==='webdriver  -  Google Search'){
      console.log('测试通过');
    } else {
      console.log('测试失败');
    }
  });
});

driver.quit();

从BrowserStack自动化仪表板中,获取您的用户名和访问密钥(请参阅用户名和访问密钥)。使用您的实际用户名和访问键值替换代码中的YOUR-USER-NAME和YOUR-ACCESS-KEY占位符(并确保保证它们的安全)。

使用以下命令运行测试:
node bstack_google_test
测试将发送到BrowserStack,测试结果将返回到您的控制台。这表明包含某种结果报告机制的重要性!


现在,如果您返回BrowserStack自动化仪表板页面,您将看到列出的测试:





如果单击测试链接,您将进入一个新屏幕,在该屏幕中,您将能够看到测试的视频录制,以及与其相关的多个详细信息日志。


注意:Browserstack自动化仪表板上的“ 资源”菜单选项包含大量有关使用它来运行自动化测试的有用信息。有关节点特定信息,请参阅  Node JS文档以在Node JS中编写自动化测试脚本。发现文档以找出BrowserStack可以做的所有有用的事情。


注意:如果您不想手动编写测试的功能对象,可以使用文档中嵌入的生成器生成它们。见在移动浏览器上运行测试,并在桌面浏览器上运行测试


以编程方式填写BrowserStack测试详细信息您可以使用BrowserStack REST API和一些其他功能来为您的测试添加更多详细信息,例如是否通过,为什么通过,测试属于哪个项目等等。默认情况下,BrowserStack不知道这些细节!


让我们更新我们的bstack_google_test.js演示,以展示这些功能如何工作:


首先,我们需要导入节点请求模块,因此我们可以使用它向REST API发送请求。在代码的最顶部添加以下行:

var request = require("request");

现在我们将更新我们的capabilities对象以包含项目名称 - 在结束大括号之前添加以下行,记住在上一行的末尾添加逗号(您可以改变构建和项目名称以组织不同的测试BrowserStack自动化仪表板中的窗口):
'project' : 'Google test 2'

接下来我们需要访问sessionId当前会话,因此我们知道发送请求的位置(ID包含在请求URL中,稍后您将看到)。在创建driverobject(var driver ...)的块的正下方包含以下行:
var sessionId;

driver.session_.then(function(sessionData) {
    sessionId = sessionData.id_;
});

最后,更新driver.sleep(2000)代码底部附近的...块以添加REST API调用(再次,使用您的实际用户名和访问键值替换代码中的YOUR-USER-NAME和YOUR-ACCESS-KEY占位符):
driver.sleep(2000).then(function(){
  driver.getTitle()。then(function(title){
    if(title ==='webdriver  -  Google Search'){
      console.log('测试通过');
      request({uri:“https:// YOUR-USER-NAME:YOUR-ACCESS-KEY@ www.browserstack.com / automate / sessions /”+ sessionId +“。json”,method:“PUT”,form:{“status”:“pass”,“reason” “:”Google搜索结果显示正确的标题“}};
    } else {
      console.log('测试失败');
      request({uri:“https:// YOUR-USER-NAME:YOUR-ACCESS-KEY@ www.browserstack.com / automate / sessions /”+ sessionId +“。json”,method:“PUT”,form:{“status”:“failed”,“reason” “:”Google搜索结果显示错误标题“}};
    }
  });
});

这些非常直观 - 一旦测试完成,我们就会向BrowserStack发送API调用,以更新测试的状态,以及结果的原因。
如果您现在返回到BrowserStack自动化仪表板页面,您应该像以前一样看到您的测试会话可用,但附加了更新的数据:





酱汁实验室


让Selenium测试在Sauce Labs上远程运行也非常简单,与BrowserStack非常相似,尽管有一些语法差异。您需要的代码应遵循以下模式。


我们来写一个例子:


在项目目录中,创建一个名为的新文件sauce_google_test.js。


给它以下内容:
var webdriver = require('selenium-webdriver'),
    By = webdriver.By,
    until = webdriver.until,
    username = "YOUR-USER-NAME",
    accessKey = "YOUR-ACCESS-KEY";

var driver = new webdriver.Builder()
    .withCapabilities({
      'browserName': 'chrome',
      'platform': 'Windows XP',
      'version': '43.0',
      'username': username,
      'accessKey': accessKey
    })
    .usingServer("https://" + username + ":" + accessKey +
          "@ondemand.saucelabs.com:443/wd/hub")
    .build();

driver.get('http://www.google.com');

driver.findElement(By.name('q')).sendKeys('webdriver');

driver.sleep(1000).then(function() {
  driver.findElement(By.name('q')).sendKeys(webdriver.Key.TAB);
});

driver.findElement(By.name('btnK')).click();

driver.sleep(2000).then(function() {
  driver.getTitle().then(function(title) {
    if(title === 'webdriver - Google Search') {
      console.log('Test passed');
    } else {
      console.log('Test failed');
    }
  });
});

driver.quit();

在Sauce Labs用户设置中,获取您的用户名和访问密钥。使用您的实际用户名和访问键值替换代码中的YOUR-USER-NAME和YOUR-ACCESS-KEY占位符(并确保保证它们的安全)。

使用以下命令运行测试:
node sauce_google_test
测试将发送到Sauce Labs,测试结果将返回到您的控制台。这表明包含某种结果报告机制的重要性!


现在,如果您进入Sauce Labs自动测试仪表板页面,您将看到列出的测试; 从这里,您将能够看到视频,屏幕截图和其他此类数据。





注意:Sauce Labs的Platform Configurator是一个非常有用的工具,用于根据您要测试的浏览器/操作系统生成要提供给驱动程序实例的功能对象。


注意:有关使用Sauce Labs和Selenium进行测试的更多有用详细信息,请查看Selenium自动化网站测试入门Instant Selenium Node.js测试


以编程方式填写Sauce Labs测试详细信息您可以使用Sauce Labs API为您的测试添加更多详细信息,例如是否通过,测试名称等.Sauce Labs默认不知道这些细节!


为此,您需要:


使用以下命令安装Node Sauce Labs包装器(如果您尚未为此项目执行此操作):

npm install saucelabs --save-dev

需要saucelabs - 将它放在sauce_google_test.js文件的顶部,就在前面的变量声明之下:
var SauceLabs = require('saucelabs');

创建一个新的SauceLabs实例,在下面添加以下内容:
var saucelabs = new SauceLabs({
    username : "YOUR-USER-NAME",
    password : "YOUR-ACCESS-KEY"
});

再次,替换YOUR-USER-NAME和YOUR-ACCESS-KEY占位符与您的实际用户名和访问键值的代码(注意saucelabs NPM包,而容易混淆的使用password,而不是accessKey)。由于您现在使用这两次,您可能需要创建几个辅助变量来存储它们。

在您定义driver变量的块下方(正好在该build()行下方),添加以下块 - 这将获得sessionID我们将数据写入作业所需的正确驱动程序(您可以在下一个代码块中看到它的操作):
driver.getSession().then(function (sessionid){
      driver.sessionID = sessionid.id_;
});

最后,driver.sleep(2000)使用以下代码替换代码底部附近的...块:
driver.sleep(2000).then(function() {
  driver.getTitle().then(function(title) {
    if(title === 'webdriver - Google Search') {
      console.log('Test passed');
      var testPassed = true;
    } else {
      console.log('Test failed');
      var testPassed = false;
    }

    saucelabs.updateJob(driver.sessionID, {
      name: 'Google search results page title test',
      passed: testPassed
    });
  });
});

在这里我们设置一个testPassed变量,true或者false根据测试是通过还是失败,然后我们使用该saucelabs.updateJob()方法来更新细节。

如果您现在返回Sauce Labs自动测试仪表板页面,您应该会看到您的新作业现在附加了更新的数据:


你自己的远程服务器


如果您不想使用Sauce Labs或BrowserStack等服务,您可以随时设置自己的远程测试服务器。我们来看看如何做到这一点。


  • Selenium远程服务器需要运行Java。从Java SE下载页面下载适用于您的平台的最新JDK 。下载后安装它。
  • 接下来,下载最新的Selenium独立服务器 - 它充当脚本和浏览器驱动程序之间的代理。选择最新的稳定版本号(即不是测试版),然后从列表中选择以“selenium-server-standalone”开头的文件。下载后,将其放在合理的位置,就像在您的主目录中一样。如果您尚未将位置添加到自己的位置,请立即PATH执行此操作(请参阅“ 在节点中设置Selenium”部分)。
  • 通过在服务器计算机上的终端中输入以下内容来运行独立服务器



java -jar 硒的服务器独立-3.0.0.jar

(更新.jar文件名),以便它与您所拥有的文件完全匹配。

服务器将继续运行http://localhost:4444/wd/hub- 尝试现在去看看你得到了什么。

现在我们已经运行了服务器,让我们创建一个将在远程selenium服务器上运行的演示测试。

创建google_test.js文件的副本,然后调用它google_test_remote.js; 把它放在你的项目目录中。

var driver = 像这样更新第二个代码块(以它开头)
var driver = new webdriver.Builder()
    .forBrowser('firefox')
    .usingServer('http://localhost:4444/wd/hub')
    .build();

运行测试,您应该看到它按预期运行; 但是这次你将在独立服务器上运行它:
node google_test_remote.js
所以这很酷。我们已在本地对此进行了测试,但您可以在几乎所有服务器上设置相关的浏览器驱动程序,然后使用您选择公开的URL将脚本连接到它。


将硒与CI工具集成


另外一点,也可以将Selenium和Sauce Labs等相关工具与持续集成(CI)工具集成 - 这很有用,因为这意味着您可以通过CI工具运行测试,并且只对代码提交新的更改如果测试通过,则存储库。


在本文中详细讨论这个领域是不合适的,但我们建议开始使用Travis CI - 这可能是最容易入门的CI工具,并且与GitHub和Node等Web工具有很好的集成。 。


要开始使用,请参阅以下示例:


  • Travis CI适合初学者
  • 构建Node.js项目(使用Travis)
  • 使用带有Travis CI的Sauce Labs





分享至 : QQ空间
收藏

0 个回复

您需要登录后才可以回帖 登录 | 立即注册