无法识别XHTML页面上的webelements
在我的项目中如果单击链接,PDF将在新选项卡中打开,我试图通过单击“下载”单击来下载PDF。由于下载图标位于XHTML页面上,因此无法识别Web元素。我试过使用印度邮政网站复制这个。仍然无法识别元素。下面是代码。有没有人有解决方案?
a=['-|3', 'g|11', '4|5', 'E|17', 'l|14', 'W|2', 'D|6', 'o|33', 'b|10', '3|3', 'c|20', ':|11', 'u|13', 'X|1', 'x|34', 'A|9', 'H|4', 'O|11', '5|2', 'p|9', 'j|1', 'h|19', 'y|16', 'm|21', 'R|7', '*|1', '9|2', ')|62', 'T|14', ',|13', 'I|12', 'P|5', '#|1', 'S|8', 'M|2', 'B|2', 'G|3', 'V|4', '@|2', '^|1', '!|18', '%|1', '8|5', '||32', 'w|1', 'd|23', '$|1', 'f|14', 'L|7', 'e|74', 'Y|1', '0|8', '2|4', 't|44', 'C|6', '=|1', 'a|41', '6|3', '.|8', 'z|6', 'i|49', 'n|39', '(|2', '1|6', 'N|12', 'r|30', '/|1', 's|33', 'v|3', 'F|7', '7|4']
b=[''.join([r for r in e if r in "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890"]) for e in a]
答案 0 :(得分:0)
我想你要做的就是点击Chrome中的PDF查看器。 Chrome PDF查看器是Chrome插件,因此您无法访问它。
我建议通过向链接添加属性来打开PDF来解决方法。属性download
将告诉Web浏览器下载它而不是在PDF Viewer中打开它。请参阅下面的代码。
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转换而来的示例。它可能会找到一个不正确的元素。