我正在尝试点击具有div
属性的role="button"
,
即使我没有使用它,也无法通过其DOM路径来获取它。
我尝试过的事情:
try {
let Button = await this.page.$("div.class1.class2 > div");
await Button.click();
console.log("Clicked");
} catch (e) {
console.log(e);
console.log("No button");
}
我得到的错误是:
TypeError: Cannot read property '$' of undefined
我试图通过包含div
的{{1}}进入div
,它确实有2个我可以关联的类,但似乎不起作用。
是否有一种方法可以使用role="button"
获取所有div的数组,并仅单击其中具有跨度并带有特定文本的div?
答案 0 :(得分:1)
删除this
关键字以解决TypeError
错误。
let Button = await page.$("div.class1.class2 > div");
要获取包含role=button
和Specific text
文本的所有div数组:
const buttons = await page.$x('//div[@role="button"][text()="Specific Text"]'); // returns: <Promise<Array<ElementHandle>>>
但是我建议添加waitForXPath
方法来等待该元素。
完整示例:
try {
const button = await page.waitForXPath('//div[@role="button"][text()="Specific Text"]');
await button.click();
console.log("Clicked");
} catch (e) {
console.log("No button", e);
}