1

请告诉我如何使用 serenity-js Target 定位以下表单中的元素。

下面是我试图自动化的页面的 Dom。 在此处输入图像描述 所以这里是一个下拉列表,你可以看到它的 id="splc" 是一个普通的 DOM .. 但该下拉列表中的内容都是阴影元素。我的要求是访问下拉列表中的内容。

现在我什至无法通过 px-component 标签(这是普通的 DOM)上的普通 xpath 单击下拉菜单。在那个 px 组件标签内,我可以看到它有一个阴影元素 #label,这是我需要单击的确切元素。问题出在我的 html 页面中,所有下拉列表都具有与阴影元素相同的#label,并且它们的父级是具有唯一 ID 的普通 xpath。

当我在 chrome 控制台上使用 Jquery

$("html #splc /deep/ div#label").click()

我可以单击所需的下拉菜单。

但是我怎样才能对 serenity-js 框架工作做同样的事情。我想使用 SERENITY-JS 概念执行量角器中的以下功能。

static dropdown = element(by.id("splc")).element(by.deepCss("#label"));

因为 serenity-js 总是需要一个目标,因为 Task 在活动中需要它。怎么能一样呢?请帮我。

4

1 回答 1

0

据我所知,无非by.deepCss是一个包装by.css

deepCss(selector: string): Locator {
  return By.css('* /deep/ ' + selector);
};

如果是这种情况,那么以下内容:

element(by.id("splc")).element(by.deepCss("#label"))

可以表示为:

element(by.css("#splc /deep/ #label"))

根据您的 jQuery 示例。

现在,如果上述方法有效,您应该能够定义 aTarget如下:

const Dropdown = Target.the('Dropdown').located(by.css("#splc /deep/ #label"))

希望这可以帮助!

于 2017-09-26T21:19:57.630 回答