2015-05-22 55 views
0

我有一個複雜的頓悟web應用程序,它只有IE兼容。以下是用戶界面上的操作順序:Selenium Web驅動程序 - 跨度div CSS下拉框 - 無法單擊元素

頁面有多個框架,其中有一個按鈕,當點擊該按鈕時會出現一組菜單選項。併爲他們的HTML是如下:

<div class="FWDropdownMenu" id="test_dropdown"> 
<div class="DropdownMenuFrame"> 
<table> 
<tbody> 
<tr> 
<td> 
<span class="eABCD" id="e1"> 
<div class="DropdownMenuItem" id="test2_dropdown" onclick=return eTop.Fire(1,this,event)"> 
<table> 
<tbody> 
<tr> 
<td> 
<div>Option 1</div> 
</td> 
</tbody> 
</table> 
</div> 

我想點擊選項1,所以我用這個來定位元素:

List<WebElement> options = driver.findElements(By.tagName("table") 
          .tagName("td").id("e1"));  

的webdriver的是能夠獲得元素,但無法點擊它。我收到了錯誤,因爲元素不可見,但即使通過點擊菜單選項在屏幕上顯示選項,我仍然無法點擊它。

有什麼想法/建議嗎?

+1

請提供點擊元素的代碼 – Saifur

+0

options變量僅包含一個元素。所以我使用options.Click(),它產生不可見的元素,當它實際可見時,我得到錯誤,因爲元素不再有效。 – Vall

回答

0

對我來說,你似乎沒有使用正確的元素定位器。按照您的問題,您要點擊Option 1,然後按ID號e1選擇元素。這將點擊下面的HTML元素

<span class="eABCD" id="e1">

我寧願使用簡單的定位是這樣的:

driver.findElement(By.xpath("//div[contains(text(),'Option 1')]")).click();

+0

嗨,我試過上面的方法,仍然不起作用。 :( – Vall

1

我找到了一種方法。在這裏發帖,因爲它可能會幫助任何人在將來:

WebElement element = driver.findElement(By.id("test2_dropdown")); 
JavascriptExecutor executor = (JavascriptExecutor)driver; 
executor.executeScript("arguments[0].click();", element); 

此方法使用JavaScript來點擊按鈕。由於我的應用程序的設計,我不能通過硒點擊元素,但使用內部JavaScript,我能夠成功地完成任務。

感謝Stackoverflow!

相關問題