我想点击页面中的列表项。
<ul class="categories" id="cat1">
<li onClick="chooseCateg(this.form, '315', 1);">Business Opp.</li>
<li onClick="chooseCateg(this.form, '269', 1);">Cars / Trucks</li>
<li onClick="chooseCateg(this.form, '301', 1);">Community</li>
<li onClick="chooseCateg(this.form, '6', 1);">For Sale</li>
<li onClick="chooseCateg(this.form, '4', 1);">Jobs</li>
<li onClick="chooseCateg(this.form, '3', 1);">Pets</li>
<li onClick="chooseCateg(this.form, '2', 1);">Real Estate</li>
<li onClick="chooseCateg(this.form, '7', 1);">Services</li>
</ul>
从上面我想点击Services
。我正在使用FirefoxDriver
。
那我怎么能实现呢?帮助我。
答案 0 :(得分:1)
你可能会因此而感到困惑的原因是你不知道XPath expressions。
有numerous strategies how to locate elements in WebDriver:
这些都是不言自明的,应该尽可能使用:
By.id
By.name
By.className
By.tagName
应谨慎使用这些内容,因为有时看似链接的内容实际上并不是真正的<a>
元素。
By.linkText
By.partialLinkText
这些是最强大,最先进的策略,可以匹配大部分“我不知道该怎么做”的东西。
By.cssSelector
By.xpath
学习并选择CSS selectors,因为它们通常更短,更易读。它们也更快匹配。但它们有它们的缺点 - 最明显的是它们无法匹配文本。
这就是XPath expressions发挥作用的地方,它们可以在明智地使用时匹配(几乎)所有内容。它们是最慢的并且难以阅读,因为它们很容易变得松散。阅读规范的有趣部分,在线查找一些教程并学习它们。
现在,您可以在这里找到Services
元素:
WebElement services = driver.findElement(By.xpath("//li[text()='Services']"));
XPath表达式本身:
//li[text()='Services']
只是让你知道,当你看到它时不要害怕它,这可以(通常也)写成:
//li[.='Services']
答案 1 :(得分:0)
这里By.cssSelector将是最完美的
driver.findElement(By.cssSelector(“#cat1&gt; li:contains('Services')”))
请告诉我上述方法是否有效。