0

使用量角器可以通过做element.all(by.css("li")).get(0)

如何用codecept做到这一点?

我试过没有成功:

I.click('.item').get(1);
I.click('.item:nth-child(2)');
4

3 回答 3

3

使用 XPath 单击元素是您拥有的最佳选择。但是,您可能有元素标签的各种实例。所以你的 XPath 必须是绝对的

例如:

I.click("//li[包含(@class,'next')]");

或者

I.click("//div[包含(@class,'next')]/li[1]");

注意:@class 可以更改为您要使用的任何标识符。

于 2017-09-27T08:57:58.923 回答
1

也可以抓取所有匹配某个模式的元素,然后通过它的索引指定你想要的那个。就我而言,我需要单击页面上的所有复选框。在这里,我抓取了所有具有相同 xpath 模式的元素(使用I.grabNumberOfVisibleElements("//fieldset/label")并使用 for 循环遍历它们的索引。

  module.exports = {
  firstCheckbox: { xpath: '//li[1]//fieldset/label'},
 
  async clickOnClassAssociations() {

    await I.waitForElement(this.firstCheckbox, WAIT_FOR_TIMEOUT)

    const totalCb = await I.grabNumberOfVisibleElements("//fieldset/label")

    for (let i=1; i<=totalCb; i++) {
      await I.waitForElement(`//li[${i}]//fieldset/label`, WAIT_FOR_TIMEOUT);
      await I.click( `//li[${i}]//fieldset/label`);
    }
  },
};
于 2021-01-12T14:15:46.023 回答
1

您可以只使用 XPath 来单击第一个 li 元素。

I.click('//li[1]');
于 2016-12-01T21:10:30.083 回答