codeceptJS - 如何从列表中单击特定元素
codeceptJS - how to click specific element from list
使用量角器可以通过 element.all(by.css("li")).get(0)
如何用codecept来做?
我试过没有成功:
I.click('.item').get(1);
I.click('.item:nth-child(2)');
您可以只使用 XPath 单击第一个 li 元素。
I.click('//li[1]');
使用 XPath 单击元素是您拥有的最佳选择。但是,您可能有元素标记的各种实例。所以你的 XPath 必须是绝对的
例如:
I.click("//li[包含(@class,'next')]");
或
I.click("//div[包含(@class,'next')]/li[1]");
注意:@class 可以更改为您要使用的任何标识符。
也可以抓取所有匹配特定模式的元素,然后通过其索引指定您想要的元素。就我而言,我需要单击页面上的所有复选框。在这里,我抓取了所有具有相同 xpath 模式的元素(使用 I.grabNumberOfVisibleElements("//fieldset/label")
并使用 for 循环遍历它们的 indexes。
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`);
}
},
};
使用量角器可以通过 element.all(by.css("li")).get(0)
如何用codecept来做?
我试过没有成功:
I.click('.item').get(1);
I.click('.item:nth-child(2)');
您可以只使用 XPath 单击第一个 li 元素。
I.click('//li[1]');
使用 XPath 单击元素是您拥有的最佳选择。但是,您可能有元素标记的各种实例。所以你的 XPath 必须是绝对的
例如:
I.click("//li[包含(@class,'next')]");
或
I.click("//div[包含(@class,'next')]/li[1]");
注意:@class 可以更改为您要使用的任何标识符。
也可以抓取所有匹配特定模式的元素,然后通过其索引指定您想要的元素。就我而言,我需要单击页面上的所有复选框。在这里,我抓取了所有具有相同 xpath 模式的元素(使用 I.grabNumberOfVisibleElements("//fieldset/label")
并使用 for 循环遍历它们的 indexes。
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`);
}
},
};