识别没有明显标识符的Web元素

时间:2013-03-26 11:45:34

标签: selenium timeout selenium-webdriver junit4

我编写了一个Webdriver测试,在运行时,有时会完成,有时则不会。

我看不出原因,我的猜测是我验证页面加载的方式不健全。

我通过在页面上等待元素“id / name / css或text”来验证网站是否在正确的位置,但是我可以找到一些元素:

<a href="javascript:doaction('1');">
<img src="images/english/go.gif" border="0" width="39" height="24"></a>

<a href="javascript:doaction('2');">
<img src="images/english/go.gif" border="0" width="39" height="24"></a>

<a href="javascript:doaction('3');">
<img src="images/english/go.gif" border="0" width="39" height="24"></a>

有没有人有效地找到这些元素?

2 个答案:

答案 0 :(得分:2)

您可以通过其属性找到元素,例如href和src。

By link = By.cssSelector("a[href=\"javascript:doaction('1');\"]"); // The quotes are escaped out because of the single quotes in the href.  Normally I would just do like I did with src and use single quotes around the href
By src = By.cssSelector("img[src='images/english/go.gif']");

WebElement linkElement = driver.findElement(link);
linkElement.click();

WebElement srcElement = driver.findElement(src);
srcElement.click();

答案 1 :(得分:0)

您始终可以使用By linkText的方法,根据它的href =“”属性找到元素。

即。 (假设司机已经开始)。

By doActionOneAnchor = By.linkText("javascript:doaction('1')");
WebElement doActionOne = driver.findElement(doActionOne);

这是您将能够使用它的WebElement。如果由于某种原因你需要对图像本身采取行动,你可以随时做:

WebElement imgDoActionOne = doActionOne.findElement(By.tagName("img"));

希望它有所帮助。