2013-03-26 46 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