【问题标题】:Protractor not finding element- all looks correct量角器没有找到元素 - 一切看起来都是正确的
【发布时间】:2016-04-14 08:02:03
【问题描述】:

Protractor 没有找到这个元素......它让我发疯。任何想法为什么?该元素确实存在......我在开发控制台中验证了它。

<download
  path="api/backup_jobs/errors.csv"
  params="errorsFilter"
  class="header-action">
  Download Filtered CSV
</download>

element(By.css('[path^="api/backup_jobs"]')).getAttribute('path');

element(By.css('download[params["errorsFilter"]')).getAttribute('path');

【问题讨论】:

  • 您到底想完成什么?您在元素上使用了 getAttribute 函数,但没有在任何地方使用它的结果。你能解释一下吗。谢谢
  • 这有关系吗?它超出了找不到元素的上下文
  • 嗯,你在问题中写的内容很重要。如果你想要完整的问题集,这里就是 - 你是什么意思它没有找到元素?它有任何错误吗?或者它没有得到元素的属性?它是隐藏的还是看不见的?您是否使用了正确的元素定位器?元素定位器是唯一的吗?谢谢。

标签: angularjs selenium protractor angularjs-e2e e2e-testing


【解决方案1】:

我认为这个选择器不正确:

element(By.css('download[params["errorsFilter"]')).getAttribute('path');

你的意思可能是:

$("download[params=errorsFilter]").getAttribute('path');

还要检查该元素是否不在 iframe 内 - 如果是,则需要在搜索元素之前使用 switchTo() 切换到框架的上下文:

browser.switchTo().frame("frame_name_or_id");  

而且,如果这是一个“时间”问题,您可以明确地wait for the element to be present

var EC = protractor.ExpectedConditions,
    elm = $("download[params=errorsFilter]");

browser.wait(EC.presenceOf(elm), 5000);  // wait up to 5 seconds

expect(elm.getAttribute('path')).toEqual("api/backup_jobs/errors.csv");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-22
    • 1970-01-01
    • 2017-03-22
    • 2018-09-24
    • 1970-01-01
    相关资源
    最近更新 更多