2013-06-04 75 views
0

我是很新的硒,這樣的問題可能是愚蠢的,但我不能化解它...硒:isDisplayed返回

我試圖做一個點擊()硒(在Java中,有Eclipse和Firefox和Chrome驅動程序)上顯示並在屏幕上可見的元素,但是當我對其應用isDisplayed()方法時,返回false。所以我得到一個異常,告訴我該元素必須可見才能對其執行操作。

我檢查了所有父母div(我沒有在我的頁面中使用任何iframe),其中一些返回true,因爲其他返回false。這裏是什麼,我嘗試做的代碼一個小例子:

<div id=1><div id=2><div id=3><div id=4><img that i want to click on with selenium\></div></div></div></div>

我想點擊與硒的IMG,但它認爲這是不顯示的。

  • 作爲不顯示
  • 的DIV4被標記爲不顯示
  • 由硒作爲顯示的DIV3被標記
  • 的DIV2被標記爲不顯示
  • 的DIV1是IMG標記標記爲顯示,因爲所有的父母div

但我絕對可以看到圖像和其他元素在我屏幕上的同一個div。

在這一點上的任何幫助? 謝謝!編輯:我用JS來修改這些屬性,尤其是股利3,這是不顯示和標記爲未顯示在加載,但然後幾個動作後,它成爲(它是和被標記爲)顯示。

編輯2:我發現標記爲不顯示的兩個div的樣式都具有樣式display:block;(在chrome開發工具中可以看到)。有任何想法嗎 ?

EDIT3:基於評價給定的鏈路上,我添加計算樣式的div:

  • DIV4:它具有非零的高度和寬度,顯示被設定在塊中。它甚至有一個最小寬度和最小高度。
  • div3:它具有非零高度和寬度,顯示也在塊上設置
  • div2:它具有0高度非零寬度和display:block;所以這可能是問題所在。
  • div1:它有一個0高度,非血清寬度,沒有顯示參數,以及隱藏的溢出-x和y。認爲這一個被標記爲由硒顯示...

任何想法?

+1

向我們展示* actual * HTML,並嘗試在面向公衆的網站上重現此內容。 – Arran

+0

問題是,實際的HTML是相當大的......並且由於它被JS修改,它甚至不會有它的「最終形式」。我試圖在公共網站上重新生成一個較小的html文件。 – Matt

+0

我無法用簡單的html文件重現相同的效果... 但是我確實發現標記爲不顯示的div div Selenium同時具有syle =「display:block;」在他們計算的樣式(在Chrome下)。 有什麼建議嗎? – Matt

回答

0

我設法解決我的問題有一個簡單的一招:調用了應該由點擊觸發JS的功能,採用

JavascriptExecutor js; 
if (driver instanceof JavascriptExecutor) { 
    js = (JavascriptExecutor) driver; 
} else { 
    throw new Exception(" Webdriver do not manage JS"); 
} 
js.executeScript("function()"); 

另一種解決方案可能是合適的是使用機器人使用鼠標點擊這個IMG,如果你當然有它的座標(或者,如果你可以計算它):

Robot robot = new Robot(); 
robot.mouseMove(300, 300); 
robot.mousePress(InputEvent.BUTTON1_MASK); 
robot.mouseRelease(InputEvent.BUTTON1_MASK); 

雖然我沒有找到一個解決方案,以顯示/不顯示的問題。 享受:)

相關問題