这是非常简单的:btw是css是要走的路; xpath应该只被用作最后的手段。 http://sauceio.com/index.php/2010/01/selenium-totw-css-selectors-in-selenium-demystified/解释css定位器比我在这里提供的空间更深入。
最好的办法:如果你使用firefox下载萤火虫,那会让你看看你的html。 Pres cmd + Shift + c,它会用元素荧光笔为你打开。找到你的html元素,也许它会是这个样子
<input type="submit" tabindex="110" value="Post Your Answer" id="submit-button">
然后你可以找到你的元素倒也干脆
WebElement element = driver.findElement(By.cssSelector("input[id='submit-button']"))
注意,我们把标记名第一个“输入”,其次是某种括号内的唯一标识符“input [id ='submit-button']”。大多数情况下,这将覆盖您使用的所有css定位器的75%。另外的25%需要在我放在页面顶部的链接中包含一些更棘手的内容。
你可能会问:“我可以再说ID使用什么样的唯一标识符的”清楚,这里涵盖:http://release.seleniumhq.org/selenium-remote-control/0.9.2/doc/dotnet/Selenium.html
好运开始了
编辑
那么好的运气找到你元素放在第一位......如果您需要,您可以通过部分定位器文本来搜索元素,如input [id * ='submit']。当你使用部分文本作为定位器的一部分时,使用它对动态生成的元素很有帮助。
你提到走上html树,也许我没有看到,当我第一次看到这个问题。我认为你遇到了这个问题。不推荐使用html树,因为它会让html测试变得更脆弱。从长远来看,它也会使你的代码不可读。一般来说,如果你的ID缺失或不可预测,我会建议与proj交谈。管理层让开发人员编写实际上可以实现自动化的代码(例如:在关键元素上实现标识符)。这实际上可以节省您和开发人员的长期努力,并且还可以提高测试的速度和可靠性。
谢谢!不幸的是,这并不能真正帮助我,因为我的元素上的大多数ID缺失或不可预测。 – reinierpost 2012-08-20 08:45:16