我最近开始使用 Protractor 库来测试 angularjs 站点。我尝试使用以下 2 个库来创建 HTML 报告,但在这两种情况下我都遇到了错误
https://www.npmjs.com/package/protractor-jasmine2-html-reporter 和 https://www.npmjs.com/package/protractor-jasmine2-screenshot-reporter。
平台:- Windows 7
安装cmd:- npm install -g protractor-jasmine2-html-reporter
错误:找不到模块“protractor-jasmine2-html-reporter”
配置文件
var Jasmine2HtmlReporter = require('protractor-jasmine2-html-reporter');
var today = new Date(),
timeStamp = today.getMonth() + 1 + '-' + today.getDate() + '-' + today.getFullYear() + '-' + today.getHours() + 'h-' + today.getMinutes() + 'm';
var reporter=new Jasmine2HtmlReporter({
consolidateAll: true,
savePath: 'target/screenshots',
takeScreenshotsOnlyOnFailures: true,
filePrefix: 'index -'+today
});
// An example configuration file.
exports.config = {
directConnect: true,
// Capabilities …Run Code Online (Sandbox Code Playgroud) 我想编写一个测试用例,在其中我将前一页中单击的元素的值与当前页面中元素值的值进行比较.
我使用以下代码 -
validateText = SoftwaresUnmappedPage_POM.checkFirstSoftwareName.getText();
expect(validateText+"*").toBe(SoftwareSummary_POM.softwareName.getText());
Run Code Online (Sandbox Code Playgroud)
例如 - 如果我单击按钮(ABC),则会加载页面.此页面包含指示我单击的元素的元素.但它将名称显示为ABC*.所以我想验证我点击的元素和我登陆的页面是否相同.
导致错误 - 预期'[object Object] '为'ABC '.
有人可以帮我解决这个问题吗?谢谢.
我正在使用量角器 - Javascript 运行自动化测试..我试图从表格格式的 UI 中获取值..
我编写了如下脚本。问题是当我进入“i”循环时。它正在获取“i”的所有值,而不是“i”的第一个值,而不是继续进行“j”循环。
然而,一旦i循环完成......它会正确地进入下一个循环j,k其中j&k循环按预期工作(根据其他编程语言中的通用循环标准)。
this.cate = function () {
let acct = [];
return this.getCountOfCate().then((values) => {
for (let i = 0; i < values; i++) {
openAccounts.push(browser.findElement(locators.someField).getText());
this.getRowCount().then((rowValues) => {
console.log('rowValues is' +rowValues);
for (let j = 0; j < rowValues; j++) {
this.getColumnCount().then((columnValues) => {
for (let k = 0; k < columnValues; k++) {
acct.push(element.all(classes.accountReports).all(by.css(getAccountCategoryCnt(i))).all(by.css('.title')).get(j).all(by.css('td')).get(k).getText());
}
})
}
});
}
return acct;
}); …Run Code Online (Sandbox Code Playgroud) BS 有几篇关于代理/防火墙的文章。
1) https://www.browserstack.com/local-testing#modifiers
2) https://www.browserstack.com/downloads/Local-Testing-Internals.pdf
在参考文献 2 中,似乎 BS 人们想到的唯一代理/防火墙方案是:BS 本地(和内部服务器)和 BS 基础设施之间存在防火墙。
然后在参考文献 1 中,我完全困惑于:
BrowserStackLocal.exe --key ACCESS_KEY --proxy-host <proxy_host> --proxy-port <proxy_port>
BrowserStackLocal.exe --key ACCESS_KEY --local-proxy-host <browsermob_proxy_host> --local-proxy-port <browsermob_proxy_port> --local-proxy-user <proxy_username> --local-proxy-pass <proxy_password>
Run Code Online (Sandbox Code Playgroud)
何时使用其中之一?
另外我在参考文献 1 中不明白,他们谈论“代理背后”和“防火墙或 VPN 后面”有什么区别。假设我在受防火墙保护的企业环境中进行测试,那么“代理背后”是什么?
有人会澄清吗?
量角器失败:元素(...).sendkeys不是函数isPresent方法对同一个输入元素返回true而不是sendkeys
我运行conf.js时出现此错误
量角器版本5.2.2
节点v8.9.4
Selenium构建信息:版本:'3.8.1',修订版:'6e95a6684b'
Chrome版本63.0.3239.132(官方版)(64位)
感谢您提前提供的任何帮助
我使用以下命令安装量角器:
npm install -g 量角器,
网络驱动程序管理器更新,
网络驱动程序管理器启动,
安装此 webdriver 管理器后运行良好。然后出于某种原因,我认为我需要独立的硒服务器。所以我使用这个命令安装它:
npm install selenium-standalone@latest -g selenium-standalone install selenium-standalone start
现在,如果我运行 webdriver-manager start 或 selenium -standalone start 中的任何一个,我都会收到这些错误。我不会同时运行两者。
I/start - java -Dwebdriver.chrome.driver=/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_2.41 -Dwebdriver.gecko.driver=/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/geckodriver-v0.21.0 -jar /usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/selenium-server-standalone-3.13.0.jar -port 4444
[10:17:56] I/start - seleniumProcess.pid: 39645
10:17:57.250 INFO [GridLauncherV3.launch] - Selenium build info: version: '3.13.0', revision: '2f0d292'
10:17:57.251 INFO [GridLauncherV3$1.launch] - Launching a standalone Selenium Server on port 4444
2018-08-02 10:17:57.408:INFO::main: Logging initialized @612ms to org.seleniumhq.jetty9.util.log.StdErrLog
10:17:57.589 ERROR [SeleniumServer.boot] - Port 4444 is busy, please choose …Run Code Online (Sandbox Code Playgroud) 运行示例回归测试时出现以下错误:
TypeError: config.suite.split is not a function
Run Code Online (Sandbox Code Playgroud)
这是配置文件。看起来不错,但我一定错过了一些东西,但我无法诚实地找到它可能是什么。
Configuration.js 文件(这是几天前工作)
var Jasmine2HtmlReporter = require('protractor-jasmine2-html-reporter');
exports.config = {
seleniumAddress: 'http://localhost:4444/wd/hub',
specs: ['PageObjectLocator2.js'],
capabilities: {
browserName: 'chrome'
},
onPrepare: function() {
browser.driver.manage().window().maximize();
jasmine.getEnv().addReporter(
new Jasmine2HtmlReporter({
savePath: 'target/screenshots'
})
);
},// end of onPrepare
suite:
{
Smoke : ['ChainLocator.js','dropDowns.js'],
Regression : 'nonAnuglarSpec.js'
},
//Options to be passed to Jasmine-node.
jasmineNodeOpts: {
showColors: true, // Use colors in the command line report.
}
}
Run Code Online (Sandbox Code Playgroud)
这是 package.json 文件。可能是这里的问题,但老实说不知道
{
"name": "LocatorTraining",
"dependencies": { …Run Code Online (Sandbox Code Playgroud) 目前,我们正在使用浏览器堆栈来运行使用量角器框架自动化的基于 Web 的自动化脚本。由于浏览器堆栈成本高昂,我们正在为支持我们的 UI 自动化脚本的浏览器堆栈寻找替代选项。我们已准备好根据新选项对我们的设置进行必要的更改。请为浏览器堆栈建议任何开源或成本较低的替代选项。
我有一个测试我正在写一个字符串读取然后获取该字符串并将其应用于switch语句.然后我将字符串与case匹配并设置一个整数值,我将其传递回spec页面,然后将int值传递给我用于if语句的另一个测试.我无法让int传递,所以if语句将无法正常工作.
切换对象:
var appsNotPurchased = 0;
this.checksHomeSublevel = function(mmCode) {
browser.get('https://iplan-qa.meetingmatrix.com/Home/Index/' + mmCode);
marketingObjects.level.getText().then(function(text) {
var homeText = text;
browser.get('https://iplan-qa.meetingmatrix.com/Home/Apps/' + mmCode);
expect($('div.apps-subscription > span').getText()).toEqual('iPlan Level: ' + homeText);
switch (homeText) {
case 'Select':
console.log(homeText);
appsNotPurchased = 6;
return appsNotPurchased;
break;
case 'Content':
console.log(homeText);
appsNotPurchased = 0 || 1 || 2 || 3 || 4 || 5 || 6;
return appsNotPurchased;
break;
}
});
Run Code Online (Sandbox Code Playgroud)
testSpec描述函数:
describe('should upload media: ', function() {
it('should select add media', function() {
var mmCode = …Run Code Online (Sandbox Code Playgroud) javascript switch-statement angularjs selenium-webdriver protractor
在 Selenium 中,您可以使用部分 id 选择一个元素 '[id$=foobar]'
但是使用量角器你可以做到 element(by.id(foobar))
有没有办法使用量角器获得类似的功能。我无法在他们的文档中找到您是否可以执行类似element(by.id$(foobar)).
我想在 javascript 中返回一个在其父元素中没有类的元素。
例如,我想在以下代码片段中获取子类元素,该元素没有“父”作为父元素的类:
<div>
<div class= "parent">
<div class="child">
Not to be selected
</div>
</div>
<div>
<div class="child">
To be selected
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
我试图通过量角器中的 xpath 返回它
我是Protractor的新手.任何人都可以告诉我如何在Protractor中使用鼠标悬停,拖放(如硒中的动作)等操作.我只需要一个语法或代码片段.
protractor ×12
javascript ×6
angularjs ×2
automation ×2
selenium ×2
testing ×2
browserstack ×1
css ×1
dom-events ×1
element ×1
gettext ×1
jasmine2.0 ×1
node.js ×1
proxy ×1
web ×1
xpath ×1