-1

Selenium IDE自动生成的Xpath不起作用,我的意思是脚本失败,因为它没有找到任何具有此类 Xpath 的元素?

有什么方法可以手动生成 Xpath吗?

<div id="ext-gen1252" class="x-trigger-index-0 x-form-trigger x-form-arrow-trigger x-form-trigger-last x-unselectable" role="button" style="-moz-user-select: none;"></div>

这是那个让我讨厌的下拉的 HTML。

driver.findElement(By.xpath("//div[2]/div/div/div/div/div/div[6]/em/button")).click();

这是 java/webdriver,因为它是从 IDE 导出的

请尽快给我一些解决方案

谢谢!

4

3 回答 3

2

IDE 和 FirePath 之类的工具只能在一定程度上帮助您。您问题中的 xpath 示例就是一个完美的例子。不仅它没有功能,而且很难猜测它的目标是什么元素。解决方案是什么?学习如何自己构建 Xpath 或 CSS。网上有很多例子。这是XpathCSS

至于你的问题,xpath 应该是这样的,

driver.findElement(By.xpath(".//div[@class='x-trigger-index-0']").click();

我强烈推荐CSS 选择器而不是 xpath,它的原因在 Selenium 社区中也有很好的记录。

driver.findElement(By.cssSelector("div[class='x-trigger-index-0']").click();
于 2013-11-11T02:52:47.907 回答
0

是的,你可以创建,例如:下面是显示 Html,然后是 body,然后是 div[] 等等。它会像“Html/body/div”一样创建你可以像这样创建你的 xpath。

<document>
<html itemtype="http://schema.org/WebPage" itemscope="">
<head>
<body id="gsr" class="hp vasq" vlink="#61c" text="#222" link="#12c" bgcolor="#fff" alink="#dd4b39" onload="try{if(!google.j.b){document.f&&document.f.q.focus();document.gbqf&&document.gbqf.q.focus();}}catch(e){}if(document.images)new Image().src='/images/nav_logo170.png'">
<div id="viewport" class="ctr-p">
于 2013-11-09T13:19:47.687 回答
0

firepath 和 xpath 助手以及许多其他扩展只是生成一个基于 id 元素,它通常不是你想要的。

如果您使用的是 chrome,您可以尝试通过指向元素来巧妙地生成 xpath的扩展

于 2017-11-16T05:47:29.680 回答