【问题标题】:codeceptJS - how to click specific element from listcodeceptJS - 如何从列表中单击特定元素
【发布时间】:2017-03-03 20:19:21
【问题描述】:

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

如何用 codecept 做到这一点?

我试过没有成功:

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

【问题讨论】:

  • I.click('.item:nth-child(2)'); 应该可以工作。您能否将您的标记发布为nth-child 并不总是那么简单。

标签: codeceptjs


【解决方案1】:

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

I.click('//li[1]');

【讨论】:

    【解决方案2】:

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

    例如:

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

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

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

    【讨论】:

      【解决方案3】:

      也可以抓取所有匹配某个模式的元素,然后通过它的索引指定你想要的那个。就我而言,我需要单击页面上的所有复选框。在这里,我抓取了所有具有相同 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`);
          }
        },
      };
      

      【讨论】:

        猜你喜欢
        • 2020-04-07
        • 1970-01-01
        • 2019-05-10
        • 1970-01-01
        • 2020-07-23
        • 2013-01-19
        • 1970-01-01
        • 2021-12-05
        • 2020-04-21
        相关资源
        最近更新 更多