2013-03-26 49 views
0

我写过一个Webdriver测试,它在运行时有时会完成,有时不会。识别没有明显标识符的Web元素

我看不出为什么,我的猜测是,我验证页面已加载的方式不健壮。

我确认该网站是在正确的位置通过等待元素“ID /名称/页的CSS或文字,但也有一些内容,我可以找到:

<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

您可以通过其属性(如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(); 
0

您可以随时使用的方法从BylinkText,即找到的元素,根据它的href =“”属性。

即(假设驱动程序已启动)。

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

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

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

希望它有帮助。

+0

如何通过其“src”找到图像元素? – 2013-03-26 12:33:35

+1

我不确定你的例子的第一部分是否正确linkText是指标签的内部文本,如下所示:'Team' – 2013-03-26 14:15:30