Tag: nightwatch.js

testing服务器上的seleniumtesting随机失败

我正在使用nodejs和nighwatch进行testing自动化的项目。 这里的问题是testing不可靠,并给出很多误报。 我尽一切努力使他们稳定,仍然得到了错误。 我经历了一些博客,如https://bocoup.com/blog/a-day-at-the-races ,并做了一些代码重构。 有没有人有一些build议来解决这个问题。 在这个时候,我有两个select,要么用Java重写代码(从解决scheme中删除nodejs和nightwatch,因为我更喜欢Java,然后是Javascript,大多数情况下,要与Javascript的非阻塞性质斗争)快照/审查应用程序日志/一次运行一个testing。 testing环境 :- 服务器-Linux 显示 – Framebuffer 总计虚拟机的-9与selenium节点并行运行testing。 浏览器 – Chrome 我得到的错误types是找不到元素。 大多数情况下,尽快加载页面,testing就会失败。 我已经设置了80秒的超时时间,所以不能发出。 testing是并行运行,但在单独的虚拟机,所以我不知道是否可以是问题。 编辑1: – 正在研究这个知道根本原因。 我做了下面的事情,以消除随机失败: – 一。 添加–suiteRetries重试失败的案例。 湾 通过错误的截图和DOM源。 一切似乎都很好。 C。 用明确的等待replace了browser.pause 同时在debugging时我观察到一个问题,也许这是导致随机故障的问题。 这是代码片段 for (var i = 0; i < apiResponse.data.length; i++) { var name = apiResponse.data[i]; browser.useXpath().waitForElementVisible(pageObject.getDynamicElement("@topicTextLabel", name.trim()), 5000, false); browser.useCss().assert.containsText( pageObject.getDynamicElement("@topicText", […]

有没有办法在Nightwatch中使用If语句来控制testing

我有一个网站,我正在testing多个版本。 我有一些在新版本中显示不在旧版本的字段,反之亦然。 我想用相同的testing来testing每个版本。 有没有办法在testing中使用if语句? 我正在尝试使用.execute并设置一个布尔variables来确定该字段是否存在并继续一种或另一种方式,但我不能从execute()命令中获取该variables。

如何在nightwatchjs项目中使用npm模块

规划一个基于nightwatchjs的项目,用于数据驱动的webtesting,加载data.json文件中的选项列表以迭代集合等。我想包含下划线或lodash npm模块。 我没有看到一个package.json,我可以通过npm install选项包含依赖关系来生成node_modules。 如何在nightwatchjs项目中使用npm模块?

如何将Docker容器端口暴露给另一个容器

我有一个docker集装箱,依靠selenium作为链接服务(也是docker集装箱)。 这个docker集装箱只是使用selenium服务作为主机来运行nightwatchJStesting无头。 selenium服务启动正常,但是当夜间testing试图在docker集装箱内运行时,我在selenium服务端口(4444)上收到拒绝的连接错误。 我可以使用curl访问此端口的selenium主机,也可以运行它的夜间testing,如果我不通过docker运行testing。 这里是我的docker撰写yaml文件: services: selenium: image: selenium/standalone-chrome ports: – "4444:4444" nightwatch: build: . volumes: – .:/home/client_test links: – selenium environment: selenium: 4444 expose: – "4444" 和我的docker文件: # #Nightwatch.js Dockerfile # FROM alpine:3.4 WORKDIR /home/client-tests ADD . /home/client-tests/ ENV NODE_PATH=/home/client-app/node_modules #RUN apk add 'firefox-esr<45.6.0-r0' #install firefox #RUN wget -c http://ftp.mozilla.org/pub/firefox/releases/45.8.0esr/firefox-45.8.0esr.linux-x86_64.sdk.tar.bz2 -P /usr/local #RUN tar […]

即使在Nightwatchjs中testing失败,Browserstack也能报告成功

我刚开始使用带有浏览器的nightwatch,我注意到当我们得到一个失败的testing时,nightwatchlogging失败,但是browserstack没有。 我正在使用的样本testing 。 另外我正在使用BrowserStack的免费试用版。 我的问题是: testing运行失败时,有什么想法可以告诉浏览器吗? 从BrowserStack 文档 : REST API 可以使用以下代码片段将testing标记为合格或不合格: var request = require("request"); request({uri:"https://user:key@www.browserstack.com/automate/sessions/<session-id>.json", method:"PUT", form:{"status":"completed","reason":""}}) 状态的两个潜在值可以完成或错误。 或者,也可以传递一个原因。 我的问题是: 如何在testing执行后获得'session-id'? 如果我可以在仪表板中看到“已完成”状态,该怎么办?

运行Nightwatch.jstesting时如何获得当前运行testing的浏览器名称?

情况 :我们使用Nightwatch在几个浏览器上运行testing ( 通过Saucelabs;一切运行良好Saucelabs )。 期望的 :我们想知道哪个浏览器 正在运行testing,所以我们可以保存截图,包括浏览器名称。 是否有可能确定哪个浏览器正在运行testing?

期望元素不包含文本

我可以写.assert.containsText('#output', 'find me')让NightWatch在div中查找文本。 但是,如何告诉NightWatch期望不在元素中find文本? 更新与工作示例 module.exports = { 'Fetch data using the default JSON format': function (browser) { browser .url('http://localhost:5000') .waitForElementVisible('body', 1000) .clearValue('input[type=text]') .setValue('input[type=text]', 'http://localhost:5000/advertisers') .click('#fetchButton') .pause(1000) .assert.containsText('#output', 'MockAdvertiser') .expect.element('#output').text.to.not.contain('xml');

在linux上使用nightwatch运行seleniumtesting

我有一个Linux的盒子,我正在试图运行seleniumtesting(写在夜间)。 我在http://chromedriver.storage.googleapis.com/index.html?path=2.9/(linuxx64位之一)上安装了chromedriver 我也安装了独立的seleniumjar 我运行以下命令 DISPLAY=:1 xvfb-run java -jar lib/selenium-server-standalone-2.52.0.jar -Dwebdriver.chrome.driver=lib/chromedriver 这是我的守夜configuration: { "src_folders": [ "tests" ], "output_folder": "reports", "custom_commands_path": "custom_commands", "custom_assertions_path": "", "page_objects_path": "", "live_output" : true, "globals_path": "globals.js", "selenium": { "start_process": true, "server_path": "lib/selenium-server-standalone-2.52.0.jar", "log_path": "", "host": "127.0.0.1", "port": 4444, "cli_args": { "webdriver.chrome.driver": "lib/chromedriver", "webdriver.chromeJenkins.driver": "../../tools/chromedriver/chromedriver", "webdriver.ie.driver": "lib/IEDriverServer_x64_2.52.2.exe", "trustAllSSLCertificates": true } }, "test_workers": { […]

NightWatch – 无法在具有值的input上find具有xpath定位器的元素

随着守夜,我有问题,我的网页上find一个元素,XPATH是好的,因为我已经find它与FirePath。 我的页码: <label class="switch " data-ng-repeat="item in values"> <input class="ng-pristine ng-untouched ng-invalid ng-invalid-required" name="obtentionPermisConduiteAccompagneeSwitcher" value="N" ng- model="$parent.model" ng-required="!$parent.model" required="required" type="radio"/> …… 我的select器: input_conduiteAccompagnee: { selector: './/input[@name="obtentionPermisConduiteAccompagneeSwitcher" and @value="N"]', locateStrategy: 'xpath' }, 我的命令: //conduite accompagnee onglet_conducteur.waitForElementVisible('@input_conduiteAccompagnee', 10000); onglet_conducteur.click('@input_conduiteAccompagnee'); browser.pause(3000); 但是我有这个信息: ×等待元素在10000毫秒内可见时超时。 – 预计“可见”,但得到:“不可见” 你有没有同样的问题?

NightwatchJS“冻结”

当我们从Windows迁移到Linux时,我们的Nightwatchtesting不再运行。 它只是冻结。 Selenium服务器已经在监听, chrome_driver (linux 64位)设置正确。 但是,这是我们得到的: $ node nightwatch.js -t tests/mytest.js –verbose [ mytestmodule ] Running: MyTest INFO Request: POST /wd/hub/session – data: {"desiredCapabilities":{"browserName":"chrome","javascriptEnabled":true,"acceptSslCerts":true,"platform":"ANY"},"sessionId":null} – headers: {"Content-Type":"application/json","Content-Length":129} 任何build议非常感谢。