无法识别 XHTML 页面上的网页元素



无法识别 XHTML 页面上的 Web 元素

在我的项目中,如果我单击链接,则会在新选项卡中打开一个 PDF,并且我正在尝试通过单击"下载"单击来下载 PDF。Web 元素未被识别,因为下载图标位于 XHTML 页面上。我尝试使用印度邮政网站复制它。仍然无法识别元素。下面是代码。有人有解决方案吗?

package com.demo.learn;
import java.util.Set;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class handle {
public static void main (String [] args){
WebDriver driver;
System.setProperty("webdriver.chrome.driver", "D://CAHCO Automation//OpteamixAutomation-master(1)//OpteamixAutomation-master//Automation_framework//OPTEAMIX//Drivers//chromedriver.exe");
driver=new ChromeDriver();
driver.get("https://www.indiapost.gov.in/VAS/Pages/Form.aspx");
driver.manage().window().maximize();
driver.findElement(By.xpath(".//*[@id='ctl00_SPWebPartManager1_g_29491a13_ee77_4e11_a5e4_e031cc13d245']/div[1]/table[1]/tbody/tr[2]/td[1]/a/img")).click();
Set<String> handles=driver.getWindowHandles();
String firsthandle = driver.getWindowHandle();
handles.remove(firsthandle);
String winhandle = handles.iterator().next();
if (winhandle!=firsthandle){
String secondWinHandle = winhandle;
driver.switchTo().window(secondWinHandle);
System.out.println("Switched");
boolean display = driver.findElement(By.xpath(".//*
[@id='download']")).isDisplayed();
if(display==true)
{
System.out.println("Displayed");
}
else
{
System.out.println("Not Displayed");
}
}
}
}

我想您要做的是单击Chrome中的PDF查看器。Chrome PDF 查看器是一个 Chrome 插件,因此您无法访问它。 我建议通过向链接添加属性以打开 PDF 来解决此问题。该属性download将告诉 Web 浏览器下载它,而不是在 PDF 查看器中打开它。请参阅下面的代码。

String script = "document.querySelector('#ctl00_SPWebPartManager1_g_29491a13_ee77_4e11_a5e4_e031cc13d245>div>table>tbody>tr>td>a>img').setAttribute('download','name-of-the-download-file-recommend-guid-or-timestamp.pdf');";
((JavascriptExecutor)driver).executeScript(script);
driver.findElement(By.xpath(".//*[@id='ctl00_SPWebPartManager1_g_29491a13_ee77_4e11_a5e4_e031cc13d245']/div[1]/table[1]/tbody/tr[2]/td[1]/a/img")).click();

请注意,我的示例#ctl00_SPWebPartManager1_g_29491a13_ee77_4e11_a5e4_e031cc13d245>div>table>tbody>tr>td>a>img中的 Css 选择器只是一个从您的 XPath 转换的示例。它可能会找到不正确的元素。

最新更新