-1

在我的例子中,页面中的所有标识符都是动态生成的。所以我不能使用xpath。

我在文档中找到了方法:grabAttributeFrom.

  • 当我在 --debug 模式下使用 cmd 时,如何查看里面的内容?
  • 我可以在搜索输入时使用grabAttributeFrom 从页面中提取xpath 吗?
  • 如何访问具有名称且 xpath 动态生成且我不能使用 xpath 的输入?

我试过这段代码:

I.fillField(locate('input').inside('.jq-panel-body-default').at(2),'John');

但它不能正常工作并产生异常:

 FAIL  Field "{"type":"xpath","output":null,"strict":true,"locator":{"xpath":".//input[ancestor::*[contains(concat(' ', normalize-space(./@class), ' '), ' jq-panel-body-default ')]][position()=2]"},"value":".//input[ancestor::*[contains(concat(' ', normalize-space(./@class), ' '), ' jq-panel-body-default ')]][position()=2]"}" was not found by text|CSS|XPath
4

1 回答 1

1
  1. 当我在 --debug 模式下使用 cmd 时,如何查看里面的内容?

里面……什么?如果你想记录属性的值,抓住它并记录:

Scenario("test", async (I) => {
  ...
  const attributeValue = await I.grabAttributeFrom(<locator>, <attribute>);
  console.log(attributeValue);
  ...
});
  1. 我可以在搜索输入时使用grabAttributeFrom 从页面中提取xpath 吗?

grabAttributeFrom用于获取属性值,而不是用于 xpath 查找。但是如果你问,你可以在定位器参数中使用 xpath,是的,你可以。

  1. 如何访问具有名称且 xpath 动态生成且我不能使用 xpath 的输入?

这还不够问你。分享一些 DOM 部分或一些要理解的东西。如果你的意思是name属性,你可以使用按名称过滤://input[@name="<your element name>"]

于 2019-02-21T12:14:52.273 回答