小编Gir*_*tur的帖子

量角器:获取警报文本?

我正在用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 = …

javascript webdriver jasmine angularjs protractor

5
推荐指数
2
解决办法
2万
查看次数

量角器-获取元素的子元素?

我正在尝试访问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行中获取用户的用户名,这正是我实际上想要做的。

javascript selenium angularjs typescript protractor

5
推荐指数
1
解决办法
1万
查看次数

元素不可见错误

我试图点击我页面上的上传文件链接,但我说上传链接不可见.我试过将鼠标悬停在链接和下面的代码上.这对我来说很容易修复,所以我真的很困惑如何点击这个链接.我尝试过的:

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)

javascript selenium automation angularjs protractor

3
推荐指数
1
解决办法
5541
查看次数

量角器关闭当前选项卡

我有一个非角度的页面,我需要点击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)

javascript jasmine angularjs selenium-webdriver protractor

3
推荐指数
1
解决办法
7444
查看次数

在量角器中从命令行传递基本URL

我正在尝试使用量角器测试我的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)...它不起作用

任何人都知道为什么会失败?

javascript selenium jasmine angularjs protractor

3
推荐指数
1
解决办法
6981
查看次数

在对浏览器进行一系列调用后,量角器/ Webdriver失去同步

我正在运行一组测试,用于在网站的许多视图上验证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)

ui-automation angularjs protractor karma-jasmine

2
推荐指数
1
解决办法
1061
查看次数

量角器和Jasmine:我如何测试重定向?

我正在尝试使用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.有没有办法测试这样的重定向?

javascript selenium jasmine angularjs protractor

2
推荐指数
1
解决办法
553
查看次数

如何在量角器中查找元素定位器

我是新的量角器,请帮我在Protractor/angularJS中使用下面的代码找到元素定位器我尝试过使用xpath和CSS.可以从此代码中使用什么定位器

<button type="submit" value="autofocus" class="btn" data-ng-click="reset()">Reset</button>
Run Code Online (Sandbox Code Playgroud)

javascript selenium automation angularjs protractor

1
推荐指数
1
解决办法
5386
查看次数

在Selenium中,使用显式等待时是否需要禁用隐式等待?

创建驱动程序后,我将隐式等待时间设置为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)

c# java selenium automation selenium-webdriver

1
推荐指数
1
解决办法
1909
查看次数

我如何点击提交按钮

我如何单击给定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)

但它不起作用。

selenium xpath submit form-submit submit-button

-2
推荐指数
1
解决办法
1万
查看次数