这很简单:顺便说一句,css 是要走的路;xpath 应仅用作最后手段。http://sauceio.com/index.php/2010/01/selenium-totw-css-selectors-in-selenium-demystified/比我在这里提供的空间更深入地解释了 css 定位器。
最佳方法:如果您使用的是 firefox 下载 firebug,那会让您查看您的 html。按下 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”前面,然后是括号“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 交谈。关于让开发人员编写实际上可以自动化的代码的管理(例如:在关键元素上实现标识符)。从长远来看,这实际上将为您和开发人员节省大量精力,并且还将提高测试的速度和可靠性。