如何在angularjs量角器jasmine测试中查看console.log输出?截至目前,浏览器自动关闭太快.
更多信息 - 我正在使用angularjs教程,第8步.我正在尝试将e2e测试更改为量角器.我正在使用的量角器配置文件基于%appdata%\npm \node_modules\protractor\referenceConf.js.在配置文件引用的spec js文件中,我有console.log的实例.但是,在执行量角器e2e测试期间,网站以chrome格式打开,我看到事情发生在浏览器中,然后浏览器关闭,然后我才能检查任何console.log输出.我想我需要以某种方式保持镀铬.怎么样?
例如,我button
从a 的行中随机选择一个元素table
.
在之后button
被发现,我想要检索table
其中包含选定按钮的排.
Heres是我的代码片段:
browser.findElements(by.css('[ng-click*=submit]')).then(function (results) {
var randomNum = Math.floor(Math.random() * results.length);
var row = results[randomNum];
// ^ Here I want to get the parent of my random button
});
Run Code Online (Sandbox Code Playgroud) 通常在量角器中,您可以选择奇异元素:
element(protractor.By.css('#fdfdf'));
Run Code Online (Sandbox Code Playgroud)
偶尔你会得到这样的东西:
element(protractor.By.css('.dfdf'));
Run Code Online (Sandbox Code Playgroud)
可能有多个元素.从定位器中选择一个定位多个元素的索引的正确方法是什么,并且仍然包含量角器发送密钥的方法?
任何人都可以告诉我如何使用jasmine框架编写测试用例以获取下载pdf文件的链接?提前致谢.
故事:
解决验证码的方法之一,如谷歌ReCaptcha,是试图模仿人类鼠标动作:动作,悬停和点击.
问题:
如何通过Selenium将鼠标移动到B样条轨迹之后的特定元素?
请注意,常规browser.actions().mouseMove(elm).perform();
会直接"跳"到元素并且太快.我的理解是,这是一个减慢运动速度的问题,在B样条轨迹的数学模型之后,从一点到另一点平滑地"跳跃".
我们使用的是Protractor/JavaScript,但问题实际上与语言无关. 请注意,我并不是要尝试解决验证码,也不是为了"使用验证码解决新恶意机器人在这里和那里违反使用条款"的空间.我只是好奇并渴望在测试自动化领域获得更多技能.
我想点击一个单选按钮,出现在网页上.代码如下:
HTML代码:
<div class="small-checkbox red-theme raleway-regular text-muted2 position-relative">
<div class="city-checkbox inline-block position-relative" ng-class="{'rounded-checkbox': main.current_city_id == 1, 'mb-20': main.ifDeviceIsPhone}">
<label class="mdl-radio mdl-js-radio mdl-js-ripple-effect mh-20" for="mumbaiCity" ng-class="{'is-checked' : main.current_city_id == 1}">
<input type="radio" id="mumbaiCity" class="mdl-radio__button position-relative vertical-middle" name="city" value="1" ng-click="main.setCity('Mumbai', 1)">
<span class="mdl-radio__label position-relative font15"><img class="city-icon" src="../../../assets/img/cities/mumbai-icon.png">Mumbai</span>
</label>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
Tesstcase:
// demo-test.js
describe('Protractor Demo App', function() {
jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000000;
it('check item count', function() {
browser.get('<link>');
element(by.id('mumbaiCity')).click();
});
});
Run Code Online (Sandbox Code Playgroud)
此测试通过错误:
1)量角器演示App检查项目计数
信息:
失败:元素不可见
我也尝试过:
element(by.css('[ng-click="main.setCity('Mumbai', 1)"]')).click();
Run Code Online (Sandbox Code Playgroud)
它给出了错误:
[16:16:26] E/launcher - 错误:SyntaxError:missing)参数列表后面 …
我目前正在开发WebApp,它有很多Angular js ......我们开始使用Selenium WebDriver并且脚本可以很好地使用刮擦代码......但我建议我们需要使用量角器而不是Selenium WebDriver.至于两者都为我做同样的工作.我发现的唯一区别是我不想明确等待加载网页..
Protractor Vs Selenium WebDriver还有其他优点或缺点吗?
在Angular Protractor测试运行后,是否可以让测试浏览器窗口保持打开状态?我在FireFox中遇到了严峻的测试失败,访问网页状态以查看正在发生的事情非常有用.
我找不到任何关于如何设置它的信息,但它似乎是一个非常基本的概念,所以我确信那里有一个答案.
我知道如何通过在配置中设置对象的browserName
属性来在不同的浏览器上运行量角器capabilities
.而且这很有效.我可以将它设置为'chrome'
或者'firefox'
我需要的任何东西,它运行正常.但是,针对多个浏览器运行单个测试套件的唯一方法(据我所知)是创建单独的配置文件,每个配置文件都有不同的browserName
,然后使用自己的配置运行每个浏览器.这可行,但它真的很慢,因为测试然后按顺序运行,而不是同时运行.
有没有办法在多个浏览器上并行运行它?
可以在SauceLabs上完成吗?甚至使用当地的Selenium-Grid?
我们只是想简化我们的测试流程,这将是一个巨大的帮助.任何建议或信息将不胜感激.提前致谢.
我在使用Protractor时遇到了一些麻烦.我有一个非常奇怪的ui-router状态,很难从其他元素开始处理页面.有没有办法让量角器等到元素最终出现在DOM中?不可见/显示,但实际创建?我一直在尝试使用等待元素,但显然无法选择.
browser.driver.wait(function () {
return elem.isDisplayed();
});
Run Code Online (Sandbox Code Playgroud) protractor ×10
angularjs ×6
selenium ×3
jasmine ×2
automation ×1
bots ×1
dom ×1
end-to-end ×1
javascript ×1
selector ×1