Puppeteer - 绝对 Xpath

要唯一地确定一个元素,我们可以借助 html 标记中的任何属性,也可以使用 html 标记上的属性组合。大多数情况下使用 id 属性,因为它对于页面是唯一的。

但是,如果不存在 id 属性,我们可以使用其他属性,如 class、name 等。如果不存在 id、name、class 等属性,我们可以使用仅适用于该标记的独特属性或属性及其值的组合来标识元素。为此,我们必须使用 xpath 表达式。此外,如果页面上的元素是动态的,那么 xpath 选择器可以作为选择器的一个不错的选择。

Xpath 可以分为两种类型 - 绝对和相对。绝对 xpath 以 / 符号开头,从根节点开始直到我们想要识别的元素。下面给出了一个示例。

/html/body/div[1]/div/div[1]/a

让我们借助绝对 xpath 识别页面上下面突出显示的徽标,然后单击它。

Puppeteer Tutorialspoint

徽标的绝对 xpath 如下 −

html/body/header/div[4]/div[1]/div[1]/a/img.

在这里,我们使用 xpath 选择器,因此我们必须使用方法:page.$x(xpath value)。此方法的详细信息在 Puppeteer 定位器一章中讨论。

首先,请按照 Puppeteer 基本测试一章中的步骤 1 到 2 进行操作,如下所示 −

步骤 1 − 在创建 node_modules 文件夹的目录中创建一个新文件(安装 Puppeteer 和 Puppeteer 核心的位置)。

Puppeteer 安装的详细信息在 Puppeteer 安装一章中讨论。

右键单击创建 node_modules 文件夹的文件夹,然后单击新建文件按钮。

Node Modules

步骤 2 −输入文件名,例如 testcase1.js。

Testcase1.JS

步骤 3 − 在创建的 testcase1.js 文件中添加以下代码。

//Puppeteer 库
const pt= require('puppeteer')
async function selectorAbsoluteXpath(){
    //以 headless 模式启动浏览器
    const browser = await pt.launch()
    //浏览器新页面
    const page = await browser.newPage()
    //启动 URL
    await page.goto('https://www.tutorialspoint.com/about/about_careers.htm')
    //使用绝对 xpath 识别元素然后单击
    const b = (await page.$x("/html/body/header/div[4]/div[1]/div[1]/a/img"))[0]
    b.click()
    //等待一段时间
    await page.waitForTimeout(4000)
    //单击后获取 URL
   console.log(await page.url())
}
selectorAbsoluteXpath()

步骤 4 − 使用下面提到的命令执行代码 −

node <filename>

因此在我们的示例中,我们将运行以下命令 −

node testcase1.js
puppeteer_tutorialspoint1.png

成功执行命令后,单击徽标图像时导航到的页面的 URL - https://www.tutorialspoint.com/index.htm 将在控制台中打印。