2013-06-13 29 views
0

我有一個菜單元素,只有點擊後纔會彈出,然後在失去焦點時淡出。我的任務是點擊一個隱藏的子菜單項。 從以前的答案到類似的情況我使用下面的代碼來點擊子菜單項。點擊Selenium中的隱藏菜單項2.33 Java

Actions builder = new Actions(driver); 
WebElement mainMenuElement= driver.findElement(By.id("Mainmenu")); 
builder.moveToElement(mainMenuElement).build().perform(); 
mainMenuElement.click(); 
Thread.sleep(2000); 
WebElement mySubMenu=driver.findElement(By.xpath("//a[text()='Kit Components']")); 
mySubMenu.click(); 

但是,當我在Chrome 27節運行的代碼,一旦三次左右從未被點擊子菜單項。主菜單打開並保持不變。但submenu.click()每次執行都沒有異常,子菜單也是可見的。

這是因爲我的代碼?或 這可能是因爲子菜單項具有用於單擊的本地化區域?即手動點擊子菜單時,點擊僅對文本起作用,而不起作用於元素剩餘的空白區域。

進出口使用硒2.33 Java的鍍鉻v 27

任何意見將是非常有益的,謝謝。

回答

1

首先,請不要在您的代碼中使用Thread.sleepEver。相反,請使用FluentWait or WebDriverWait commands

現在,回答你的問題,似乎你已經偶然發現有人稱之爲「擋板」,或「flakey test」。如果你的測試失敗了三次,那麼事情就會變得很糟糕。

我已經注意到每隔一段時間,點擊功能並不總是會進行實際的點擊(即使代碼中的每一個指示都說明了它)。我想知道你是否正在發生這種情況?通常我會檢查點擊是否發生。如果它嘗試單擊代碼但沒有任何反應,我會讓它重試點擊。如果重試不起作用,那麼某些事情就真的到了。

+0

Thx的意見。我覺得點擊不起作用,只要我離開鼠標指針內的網頁..現在我使用JscriptExecutor來點擊。它的工作很好,直到現在。 –