我正在使用Chromedriver尝试找到以下元素:
<td class="section-menuoption"
onmouseover="this.className='section-menuoption-hilite';"
onmouseout="this.className='section-menuoption';" align="left"
onclick="self.jssDetails.location='products.php?xUser=kery&xRand=123';">
Scheduled Changes
</td>
在Firefox中使用SeleniumIDE时,我可以毫无问题地使用此选择器:
//*[contains(text(), 'Scheduled Changes')]
然而,当我尝试将此选择器与Chromedriver一起使用时,我得到一个“没有这样的元素”错误(通过maven运行)。我的Chromedriver代码看起来像这样:
WebElement box = driver.findElement(By.xpath("//*[contains(text(), 'Scheduled Changes')]"));
System.out.print(box.getText());
box.click();
我尝试过不同的引用策略,不同的xpath(在SeleniumIDE中也能正确解析),但没有成功。我现在唯一能想到的就是改变我的XPath实现,但我甚至不确定Chromedriver是否可行。
非常感谢任何帮助。
答案 0 :(得分:3)
首先,确保它不在任何类型的框架中。否则,您需要先切换到框架like this。
然后尝试使用css选择器而不是XPath。例如(您可能需要尝试不同的变体):
WebElement box = driver.findElement(By.cssSelector("td[onclick*=\"self.jssDetails.location='products.php?xUser=kery&xRand=123';\"]"));
此外,您可能希望发布您尝试过的每个XPath,以帮助我们分析。