如何编写 xpath 来使用标签名称获取标签的值,该标签名称分别有 2 个桌面实例和移动实例

问题描述 投票:0回答:1

需要获取上述标签的桌面版和移动版的价值。 XPath 应该使用标签来获取相应的值。

导航到 https://pagespeed.web.dev,输入 https://www.google.com,然后使用桌面版和移动版的标签名称获取每个标签的相应值。

需要编写 XPath 的指导。

用于最大内容绘制 (LCP) 的移动 XPath

(//*[contains(text(), 'Largest Contentful Paint (LCP)')])[1]/div/div/span/span/span

和桌面

(//*[contains(text(), 'Largest Contentful Paint (LCP)')])[2]/div/div/span/span/span

不工作。同样,其他标签也不起作用。

手机:

<div class="PZeSbe">
    <div class="XErri tmOOye"></div>
    <span class="h1llh"><a href="https://web.dev/lcp/" target="_blank" class="eNGozb">Largest Contentful Paint (LCP)</a></span>
    <div class="QKDQJb">
        <div class="cOTkPe">
            <span class="DyTaId xTnkAf">
                <span class="f49ZR">
                    <span class="Ykn2A LR2yK">1.2 s</span>
                </span>
            </span>
        </div>
        <div style="display: flex;">
            <span style="flex-grow: 0.9288; padding-right: 2px;">
                <div class="Q9Ncgb" style="height: 5px; width: 100%;"></div>
            </span>

桌面:

<div class="PZeSbe">
    <div class="XErri tmOOye"></div>
    <span class="h1llh"><a href="https://web.dev/lcp/" target="_blank" class="eNGozb">Largest Contentful Paint (LCP)</a></span>
    <div class="QKDQJb">
        <div class="cOTkPe">
            <span class="DyTaId xTnkAf">
                <span class="f49ZR">
                    <span class="Ykn2A LR2yK">1.5 s</span>
                </span>
            </span>
        </div>
        <div style="display: flex;">
            <span style="flex-grow: 0.8753; padding-right: 2px;">
                <div class="Q9Ncgb" style="height: 5px; width: 100%;"></div>
            </span>

例如:移动和桌面的价值

标签: 核心网络生命体评估:--

手机

(//*[contains(text(), 'Core Web Vitals Assessment: ')])[1]/span

桌面

(//*[contains(text(), 'Core Web Vitals Assessment: ')])[2]/span

最大的内容涂料(LCP)
与下一个油漆的互动(INP)
累积布局偏移 (CLS)
首次内容绘制 (FCP)
首次输入延迟 (FID)
第一个字节的时间 (TTFB)

尝试使用 XPath 处理所有提到的桌面和移动标签,但没有成功。需要指导为使用标签名称的桌面和移动设备的所有标签提供 XPath。

java selenium-webdriver xpath
1个回答
0
投票

您正在寻找的 XPath 是

//div[@class='PZeSbe'][.//a[text()='Largest Contentful Paint (LCP)']]//span[contains(@class,'Ykn2A')]

你可以像这样使用它

String url = "https://pagespeed.web.dev/";
driver = new ChromeDriver();
driver.manage().window().maximize();
driver.get(url);

String testUrl = "https://www.google.com/";
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));
driver.findElement(By.id("i4")).sendKeys(testUrl + "\n");

String[] labels = {"Largest Contentful Paint (LCP)", "Interaction to Next Paint (INP)", "Cumulative Layout Shift (CLS)", "First Contentful Paint (FCP)", "First Input Delay (FID)", "Time to First Byte (TTFB)"};

for (String label : labels) {
    String value = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[@class='PZeSbe'][.//a[text()='"+ label +"']]//span[contains(@class,'Ykn2A')]"))).getText();
    System.out.println(label + ": " + value);
}

driver.quit();

打印

Largest Contentful Paint (LCP): 1.2 s
Interaction to Next Paint (INP): 250 ms
Cumulative Layout Shift (CLS): 0.04
First Contentful Paint (FCP): 1 s
First Input Delay (FID): 28 ms
Time to First Byte (TTFB): 0.5 s
© www.soinside.com 2019 - 2024. All rights reserved.