【问题标题】:d3 __data__ and protractor E2E testingd3 __data__ 和量角器 E2E 测试
【发布时间】:2016-04-08 00:57:10
【问题描述】:

我已经在互联网上搜索了这个问题的答案,但找不到答案。

如何从量角器测试中获取附加到元素的数据

element(by.css('path')) 返回一个对象,其中包含一些方法,例如 getText()、count() 等,但我无法获取附加的 data路径。

我需要这个来获取路径的深度,然后单击具有所需深度的正确路径。

我当然可以将属性附加到<path>,例如<path data-depth=3> 但我不想添加属性只是为了编写 E2E 测试

任何帮助将不胜感激。

【问题讨论】:

  • 您能否让问题更具体一些 - 提供 HTML 代码和您想要定位的所需元素/数据?谢谢。
  • 如果有人正在寻找类似问题的解决方案,请参阅此处的小提琴 - jsfiddle.net/hsuh/euom9fpa/4

标签: angularjs d3.js protractor


【解决方案1】:

您可以在浏览器中运行脚本并从中获取数据:

browser.executeScript("return d3.select(your_element).data()").then(function(data) {
  // work with data
});

【讨论】:

  • 问题是如何将数据返回到量角器? var depth; browser.executeScript( "return d3.select(your_element).data()").then(function(data) { depth = data.depth; }); console.log('depth', depth); //depth is undefined.
  • 你通过一个承诺把它还给量角器,就像几乎所有的东西一样。执行elem.getText() 时的行为相同,您不能直接使用console.log。您可以做的是在.then() 回调中编写console.log 和其余步骤
  • 所以,我需要对 then() 块中的数据进行映射并获取路径并单击该路径。 then(function(path){ path.click(); 我怎样才能点击那个元素?正常的 click() 不起作用,因为它不是量角器元素。这是一个html元素。路径将如下所示 - 非常感谢。
  • 如何将此路径映射到数据?抱歉,我不确定您的意思,这是一个不同的问题。在最坏的情况下,您可以在 browser.executeScript 中执行浏览器中的所有代码,包括使用 vanilla 或 jQuery 进行点击。
  • 对不起,我不清楚。我在这里创建了一个小提琴来向您展示我的意思 - jsfiddle.net/euom9fpa/1 1. 即使在 browser.execute 块路径可用并返回 2. 我如何单击 path() 元素,也不返回路径。不过,我可以为此创建一个不同的 stackoverflow 帖子。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多