Selenium使用Chromedriver无法通过xpath找到元素

3
我正在使用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&amp;xRand=123';">
  Scheduled Changes
</td>

在使用Firefox中的SeleniumIDE时,我可以无问题地使用此选择器:

//*[contains(text(), 'Scheduled Changes')] 

然而,当我尝试在Chromedriver中使用这个选择器时,我会得到一个"no such element"错误(通过maven运行)。我的Chromedriver代码如下:
WebElement box = driver.findElement(By.xpath("//*[contains(text(), 'Scheduled Changes')]"));
System.out.print(box.getText());
box.click();

我尝试了不同的引用策略和不同的XPath(这些XPath在SeleniumIDE中也正确解析),但都没有成功。现在我能想到的唯一办法就是更改我的XPath实现,但我甚至不确定这是否可能使用Chromedriver。非常感谢任何帮助。
1个回答

3

首先,确保它不在任何框架中。否则,您需要先切换到框架中,像这样

然后尝试使用CSS选择器而不是XPath。例如(您可能需要尝试不同的变体):

WebElement box = driver.findElement(By.cssSelector("td[onclick*=\"self.jssDetails.location='products.php?xUser=kery&amp;xRand=123';\"]"));

此外,您可能希望发布您尝试过的每个XPath,以帮助我们进行分析。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接