需要获取上述标签的桌面版和移动版的价值。 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。
您正在寻找的 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