我已经看过很多次人们建议使用它:
browser.ignoreSynchronization=true; // or false
Run Code Online (Sandbox Code Playgroud)
但我不明白我们为什么需要它?
例如,我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) 我假设browser.wait应该是一个阻塞调用,但它没有像我预期的那样工作.这是我的样本:
describe("browser.wait", function() {
beforeEach(function() {
browser.wait(function() {
console.log('1 - BeforeEach WAIT');
return true;
});
console.log('2 - BeforeEach after wait');
});
afterEach(function() {
browser.wait(function() {
console.log('4 - afterEach WAIT');
return true;
});
console.log('5 - afterEach after wait');
});
it('should probably actually wait.', function() {
console.log('3 - IT statement');
expect(1).toBe(1);
});
Run Code Online (Sandbox Code Playgroud)
现在,因为我认为browser.wait实际上是阻塞的,我认为我的console.log调用将按顺序运行; 1,2,3,4,5;
我得到的实际输出是:
2 - BeforeEach after wait
1 - BeforeEach WAIT
3 - IT statement
5 - afterEach after wait
4 - afterEach WAIT
Run Code Online (Sandbox Code Playgroud)
我如何让browser.wait等待?或者我完全使用了错误的功能?我需要阻止的东西,直到我的浏览器到达下一个呼叫所需的位置.
在 Cypress 中,我想根据其文本内容从一组按钮中选择一个按钮。我该怎么做?这是我的方法:
export const getCustomerButton = () => getNavigationSidenav()
.find('mat-expansion-panel-header')
.each(($el, index, $list) => {
const text = $el.find('.mat-content > mat-panel-title').text();
if (text === 'Customer') {
return $el;
}
return null;
});
Run Code Online (Sandbox Code Playgroud)
我现在的问题是我必须从元素数组中过滤掉空值。有没有更简单的方法?
在我的一个测试中,我使用以下命令查找元素CSS selector:
element(by.css("ul.nav button"))
Run Code Online (Sandbox Code Playgroud)
有多个匹配查询的元素,但是,因为我只需要第一个元素,所以我对选择器没问题.
问题是,protractor发出警告:
警告 - 找到定位器By.cssSelector("ul.nav button")的多个元素 - 将使用第一个结果
有可能抑制警告吗?换句话说,我怎么能protractor知道我已经意识到这个问题并且不想再显示警告了?
使用protractor开发版本(直接从master分支安装).
我在堆栈ASP MVC + AngularJS上有一个SPA应用程序,我想测试UI.现在我正在尝试使用PhantomJS和WebKit驱动程序的Selenium.
这是一个示例测试页面 - 具有单个元素的视图.列表项<li>从服务器动态加载,并由Angular限制.
<div id="items">
<li>text</li>
<li>text2</li>
</div>
Run Code Online (Sandbox Code Playgroud)
我正在尝试通过测试,并且此行中存在错误:
_driver.FindElements(By.TagName('li'))
Run Code Online (Sandbox Code Playgroud)
此时没有加载的元素,_driver.PageSource不包含元素.
我该如何等待加载项目?请不要建议Thread.Sleep()
在量角器中,基本上有3种方法可以检查元素是否存在:
var elm = element(by.id("myid"));
browser.isElementPresent(elm);
elm.isPresent();
elm.isElementPresent();
Run Code Online (Sandbox Code Playgroud)
这些选项是否相同且可以互换,哪个应该是首选?
javascript selenium end-to-end selenium-webdriver protractor
如果测量用例在量角器中失败,是否有办法退出测试套件并停止执行进一步的测试用例?
我一直试图在网上找到这个问题的答案,但我找不到足够好的东西让我对答案感到肯定.
我相信它们基本相同,但用户验收测试(UAT)需要真实用户,而端到端(E2E)测试使用自动化工具来模拟用户?
我正在尝试计算转发器中的元素并将其打印到控制台.
这是标记:
<div class="col-md-3 ng-scope" ng-repeat="app in userApps" >...< /div>
Run Code Online (Sandbox Code Playgroud)
目前我正在计算和比较:
expect(element.all(by.repeater('app in userApps')).count()).toEqual(4);
Run Code Online (Sandbox Code Playgroud)
它有效,但我也希望能够打印它.
我试过这个:
var rows = element.all(by.repeater("app in userApps"));
var sum = rows.count();
console.log(sum.getText());
Run Code Online (Sandbox Code Playgroud)
但我得到了:
TypeError: Object [object Object] has no method 'getText'
Run Code Online (Sandbox Code Playgroud)
实际上有两个问题 - 我是以正确的方式做到的吗?2.如何将其打印到控制台?
end-to-end ×10
protractor ×7
testing ×6
angularjs ×5
javascript ×5
selenium ×2
c#-4.0 ×1
cypress ×1
dom ×1
jasmine ×1
phantomjs ×1
warnings ×1