如何在CodeceptJS中调试和使用grabAttributeFrom?

时间:2019-02-21 08:09:13

标签: node.js puppeteer functional-testing codeceptjs

就我而言,页面中的所有标识符都是动态生成的。所以我不能使用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

1 个答案:

答案 0 :(得分:0)

  1. 在--debug模式下使用cmd时,如何查看内部内容?

里面..什么? 如果要记录属性值,请抓住它并记录:

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

grabAttributeFrom用于获取属性值,而不用于xpath查找。 但是,如果您询问,是否可以在locator参数中使用xpath,可以。

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

这还不够问你。共享一些DOM部分或一些需要了解的内容。 如果您指的是name属性,则可以按名称使用过滤://input[@name="<your element name>"]