我正在用Protractor测试我的Angular应用程序.我查看了文档,找不到任何方法来获取警报文本.这不是DOM本身的一个元素(至少,不是我能弄明白的;当有警报时,Chrome的检查员将不允许你检查它).我如何测试警报是否有正确的消息?或者甚至,那个存在?
这是我的代码.HTML:
<button id='alertButton' data-ng-click='ngAlert()'>Button</button>
Run Code Online (Sandbox Code Playgroud)
JS:
$scope.ngAlert = function(){
window.alert('Hello');
};
Run Code Online (Sandbox Code Playgroud)
量角器规格:
describe('alert', function(){
var ptor = protractor.getInstance();
beforeEach(function(){
button = $('#alertButton');
button.click();
});
it('tells the alert message', function(){
expect(button.getText()).toEqual('Button');
});
});
Run Code Online (Sandbox Code Playgroud)
当我对按钮文本进行断言时,如下所示:
it('tells the alert message', function(){
expect(button.getText()).toEqual('Button');
});
Run Code Online (Sandbox Code Playgroud)
它过去了.但是,如果我尝试读取这样的警报:
it('tells the alert message', function(){
var alertDialog = ptor.switchTo().alert();
expect(alertDialog.getText()).toEqual('Hello');
});
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
$量角器规格/ E2E/conf.js使用硒服务器的 HTTP://本地主机:4444/WD /集线器 .F
失败:
1)警告告诉警报消息消息:NoSuchAlertError:没有警报打开(会话信息:chrome = 30.0.1599.101)(驱动程序信息:chromedriver = 2.2,平台= Mac OS X 10.9.0 x86_64)(警告:服务器未提供任何堆栈跟踪信息)命令持续时间或超时:3毫秒构建信息:版本:'2.35.0',修订版:'c916b9d',时间:'2013-08-12 15:42:01'系统信息:os.name:' Mac OS X',os.arch:'x86_64',os.version:'10 .9',java.version:'1.6.0_65'会话ID:edbaa752eb14ad45f7e961903b69a466驱动程序信息:org.openqa.selenium.chrome.ChromeDriver Capabilities [{platform = …
我正在尝试访问ng-repeat元素的子元素,但是这样做很麻烦。
我到处搜索了有关问题,发现的解决方案对我不起作用。这些解决方案之一是执行以下操作:
var parent = element(by.repeater(''));
var child = parent.element(by.....);
Run Code Online (Sandbox Code Playgroud)
当我尝试该child行时,看不到父元素上的元素函数。
http://prikachi.com/images/11/8338011u.png
如果您看到上面的屏幕截图,您将看到我要测试的页面代码的结构。
我需要访问头像图像的alt属性,并获取其值(即用户的用户名)。
我想到的一件事是.getInnerHTML()在ng-repeat行上使用,它将返回包含所有代码的字符串。从那里可以alt通过字符串操作找到该属性及其值,但这似乎太过残酷了,我相信必须有更好的方法。
我只是想能够从转发器中获取第4行,并在第4行中获取用户的用户名,这正是我实际上想要做的。
我试图点击我页面上的上传文件链接,但我说上传链接不可见.我试过将鼠标悬停在链接和下面的代码上.这对我来说很容易修复,所以我真的很困惑如何点击这个链接.我尝试过的:
var EC = protractor.ExpectedConditions;
var uploadLink = element(by.model('roomPlanCtrl.mm2010File'));
browser.wait(EC.elementToBeClickable(uploadLink), 10000);
uploadLink.click();Run Code Online (Sandbox Code Playgroud)
HTML:
<span class="dg-link ng-untouched ng-valid ng-dirty ng-valid-parse" ngf-select="" ng-model="roomPlanCtrl.mm2010File" accept=".mms" ng-hide="roomPlanCtrl.hideImportLinks">Upload a MeetingMatrix 2010 File</span>Run Code Online (Sandbox Code Playgroud)
我有一个非角度的页面,我需要点击2个链接.单击其中一个在新选项卡中自动打开的链接时.现在我切换到新选项卡并设置,browser.ignoreSynchronization = false因为新打开的选项卡是一个角度窗口; 并打电话给我的一个测试.一旦验证.我想关闭当前选项卡并返回非角度页面以单击链接#2,这将再次在新选项卡中打开.我试过,window.close但我得到的窗口是未定义的.我使用了browser.window,甚至没用.请指教
element(by.id('trMyUrl'));
browser.getAllWindowHandles().then(function (handles) {
var secondWindowHandle = handles[1];
var firstWindowHandle = handles[0];
browser.switchTo().window(secondWindowHandle).then(function () { //the focus moves on new tab\
browser.ignoreSynchronization = false;
empLogin.test();
window(secondWindowHandle).close()
// window.close()
// browser.close()
// browser.window.close()
})
});
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用量角器测试我的angularjs应用程序.我的conf.js看起来像这样
exports.config = {
seleniumAddress: 'http://localhost:4444/wd/hub',
capabilities: {
'browserName': 'chrome'
},
specs: ['HomePageCtrl_spec.js'],
chromeOnly: true,
jasmineNodeOpts: {
onComplete: null,
isVerbose: false,
showColors: true,
includeStackTrace: true
},
onPrepare: function() {
browser.manage().window().setSize(1600, 1000);
},
params : {
url : 'test'
}};
Run Code Online (Sandbox Code Playgroud)
我在命令提示符下运行此命令
protractor Conf.js --params.url='https://XXXXX/YYY'
Run Code Online (Sandbox Code Playgroud)
在我的spec文件中,在beforeEach函数中,我能够获得传递的url(console.log((browser.params.url))正确地来了),但是当我这样做browser.get(browser.params.url)...它不起作用
任何人都知道为什么会失败?
我正在运行一组测试,用于在网站的许多视图上验证URL和一些HTML/Angular项.基本上,测试会在左侧面板中抓取一个图标(在您悬停时移入和移出),然后出现一个菜单,其中包含您可以单击的按钮.一旦菜单出现并显示第一层按钮,就可以点击另一组按钮(子菜单).
当我将鼠标悬停在子菜单按钮上并单击这些按钮时,我将被发送到页面/视图,我可以在其中执行断言/验证.
菜单将在此时消失,直到我将鼠标悬停在图标上并再次执行上述操作.除了最多有15个子按钮点击之外,我的所有测试都通过了.我试图颠倒顺序,因为当时看不到几个按钮,但测试再次失败.
有没有人遇到过在浏览器中重复执行大量操作后测试失败的情况?我在想我是在装载司机或其他什么东西......
我收到以下错误:
Message:
Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
Stack:
Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
3 specs, 1 failure
Finished in 63.217 seconds
ui-platform/node_modules/protractor/node_modules/selenium-webdriver/lib/atoms/error.js:113
var template = new Error(this.message);
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Protractor和Jasmine编写一组e2e测试.我从这开始:
describe('app login page', function() {
it('shoudl be redirected to /#/login', function() {
browser.get('http://127.0.0.1:8090');
jasmine.log(window.location.pathname);
expect(window.location.pathname).toEqual('/#/login');
});
});
Run Code Online (Sandbox Code Playgroud)
但看起来它没有通过控制台.我收到以下错误ReferenceError: window is not defined.有没有办法测试这样的重定向?
我是新的量角器,请帮我在Protractor/angularJS中使用下面的代码找到元素定位器我尝试过使用xpath和CSS.可以从此代码中使用什么定位器
<button type="submit" value="autofocus" class="btn" data-ng-click="reset()">Reset</button>
Run Code Online (Sandbox Code Playgroud) 创建驱动程序后,我将隐式等待时间设置为10秒。
当我希望使用显式等待时,是否必须将隐式等待设置为0?
这是一个示例:
WebDriver webDriver = new FirefoxDriver();
webDriver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
//Now I want to use Explicit wait
Run Code Online (Sandbox Code Playgroud)
我是否必须做webDriver.manage()。timeouts()。implicitlyWait(0,TimeUnit.SECONDS); 还是没有必要?
WebDriverWait wait = new WebDriverWait(webDriver, WAIT_FOR_TIMEOUT_SEC);
WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id(id)));
Run Code Online (Sandbox Code Playgroud) 我如何单击给定HTML上的Submit按钮
<span class="sbt-btn-wrap relative">
<input class="submit icon" type="submit" onclick="submitmnLogin($(this), 'testPrepLogin');trackGaEvent('Content Hub Home','Login Popup','Login Button');">
Run Code Online (Sandbox Code Playgroud)
我试过了
driver.findElement(By.className("sbt-btn-wrap relative")).click();
Run Code Online (Sandbox Code Playgroud)
和
driver.findElement(By.className("submit icon")).click();
Run Code Online (Sandbox Code Playgroud)
但它不起作用。
angularjs ×8
protractor ×8
javascript ×7
selenium ×7
jasmine ×4
automation ×3
c# ×1
form-submit ×1
java ×1
submit ×1
typescript ×1
webdriver ×1
xpath ×1