2012-10-30 40 views
0

我使用Selenium網絡驅動程序,並嘗試點擊搜索圖像,它無法點擊此。我不確定發生了什麼問題。我曾嘗試Selenium:無法點擊課程和圖像

的XPath選項

driver.findElement(By.xpath("//form/div/div/div/div/div[2]/table/tbody/tr/td[2][@class='icon-button combo-button']")).click(); 

還試圖圖像

driver.findElement(By.xpath("//form/div/div/div/div/div[2]/table/tbody/tr/td[2]/img[contains(@src,'iconActionSearch.png')]")).click(); 

我已經試過完全相同的硒IDE

driver.findElement(By.xpath("//div[@id='divToolbar']/div[2]/table/tbody/tr/td[2]/img")).click(); 

這就是上面的代碼是假設採取行動

<td class="icon-button combo-button" title="Search"> 
    <img src="../common/images/iconActionSearch.png"> 

這是HTML片段,我有

<!DOCTYPE html> 
<html> 
<head> 
<body class="navigator" onbeforeunload="closeAllChildWindows()" onload="initializeSlideIns()"> 
<div class="mmenu" style="display: none;"> 
<div class="mmenu" style="display: none;"> 
<div class="mmenu" style="display: none;"> 
<div class="mmenu" style="display: none;"> 
<div class="mmenu" style="display: none;"> 
<div class="mmenu" style="display: none;"> 
<div class="mmenu" style="display: none;"> 
<div class="mmenu" style="display: none;"> 
<div class="mmenu" style="display: none;"> 
<div class="mmenu" style="display: none;"> 
<div class="mmenu" style="display: none;"> 
<div class="mmenu" style="display: none;"> 
<div class="mmenu" style="display: none;"> 
<div class="mmenu" style="display: none;"> 
<div class="mmenu" style="display: none;"> 
<form name="navigatorForm"> 
<div id="pageHeadDiv"> 
<div class="toolbars"> 
<div class="toolbar-container"> 
<div id="divToolbar" class="toolbar-frame"> 
<div class="toolbar"> 
<div class="toolbar functions"> 
<table border="0" cellspacing="0" cellpadding="0"> 
<tbody> 
<tr> 
<td class="icon-button" nowrap="" itemid="emx567127522162.935" title="Home"> 
<td class="icon-button combo-button" title="Search"> 
<img src="../common/images/iconActionSearch.png"> 
</td> 
<td class="menu-arrow" title="Search"> 
<td> 
</tr> 
</tbody> 
</table> 
</div> 
</div> 
</div> 
</div> 
</div> 
<div class="breadcrumbs"> 
<script src="./scripts/emxBreadcrumbs.js" type="text/javascript"> 
<script src="./scripts/emxQuery.js" type="text/javascript"> 
<script type="text/javascript"> 
<div id="pageContentDiv" style="top: 62px;"> 
<div id="layerOverlay" style="display: none;"></div> 
<div id="panelSlideIn" class="dialog viewer" style="top: 62px; display: none;"> 
<div id="windowshadeMask" style="z-index: 50; display: none;"> 
</form> 
<div id="checkoutdiv"> 
</body> 
</html> 

回答

3

嘗試使用CSS選擇器的選擇:

String cssSelector="td[class='icon-button combo-button']>img" 
driver.findElement(By.cssSelector(cssSelector)).click(); 

一個忠告:使用Firebug,Firefox擴展,以驗證您所在元素正確 enter image description here

+0

感謝尤金您的回答,事實上它仍然無法正常工作。我明白webelement是存在的,因爲沒有NoSuchElementException異常,但不知道爲什麼它不可點擊。 – user981116

+0

NoSuchElementException在兩種情況下出現:或者找不到元素的位置。如我在文章中提到的那樣,通過驗證螢火蟲中的定位器解決了這個問題。其他可能的問題 - 元素不呈現,你想在非呈現元素上進行交互。解決方案:嘗試使用顯式或隱式等待機制,例如 driver.manage.timeout.implicitWait(3,TimeUnit.SECONDS); –

+0

謝謝,你說得對。它似乎是我嘗試點擊的元素沒有正確呈現。隱含的等待完成了這項工作。 – user981116

0

就像一個不同的解決方案eugene(順便說一下,這是一個更好的方法,因爲CSS選擇器會l條快),如果必須使用XPath:

//td[@class='icon-button combo-button']/img 

你初始的XPath的解決方案行不通,他們都非常侷限在特定位置。你在某個地方放入一個額外的div,並且你的整個XPath將會崩潰。所以去做一些不太脆的東西吧。