2014-03-26 14 views
0

我正在使用Selenium來使用Java語言自動化UI。Selenium(Java):將鼠標懸停在某個按鈕上,然後單擊其中一個選項

我有一個動作按鈕,當用戶將鼠標懸停接管行動按鈕鼠標,它給出了兩個可單擊選項 - 創建和編輯

我已存儲的CSS定位器作爲枚舉了動作按鈕,也爲創建和編輯(可點擊)鏈接分別爲ACTIONBUTTON,CREATEACTION,EDITACTION。

我使用的Java代碼像下面,但它給出了一個錯誤說java.lang.ClassCastException:org.openqa.selenium.By $ ByCssSelector不能轉換到org.openqa.selenium.WebElement

Actions actions = new Actions(driver); 
actions.moveToElement((WebElement) DCSAdminEnums.ACTIONBUTTON.getLocator()); 

actions.moveToElement((WebElement) DCSAdminEnums.CREATEACTION.getLocator()); 
actions.click(); 
actions.perform(); 

請建議您使用我擁有的Enums來幫助更好地處理此問題。

更新: 我也試圖與代碼下面的風格,但它沒有工作:-(

WebElement menu = driver.findElement((By.xpath("//*[@id='button-1177-btnInnerEl']"))); 
WebElement submenu = driver.findElement((By.cssSelector("a[id='menuitem-1175-itemEl']"))); 
Actions action = new Actions(driver); 
action.moveToElement(menu).perform(); 
Thread.sleep(2000); 
action.click(submenu).perform(); 

回答

0

ByWebElement是不同的類型,因此編譯錯誤

如果你是。談論行動沒有執行,那麼這是一個完全不同於你原來的帖子。請問一個新的問題。

WebbElement可以檢索driver.findElement(By locator),所以你需要使用driver.findElement(yourLocator)來獲取元素。

Actions actions = new Actions(driver); 
actions.moveToElement(driver.findElement(DCSAdminEnums.ACTIONBUTTON.getLocator())); 
actions.moveToElement(driver.findElement(DCSAdminEnums.CREATEACTION.getLocator())); 
actions.click().perform(); 
+0

'findElement' ** – sircapsalot

+0

謝謝,但對我來說沒有工作:-( 我甚至試着寫下面的風格(不使用枚舉),但仍然沒有運氣.. WebElement菜單= driver.findElement ((By.xpath(「// * [@ id ='button-1177-btnInnerEl']」))); WebElement submenu = driver.findElement((By.cssSelector(「a [id ='menuitem-1175- ();); action.click(submenu).perform();); –

+0

對不起,我的模糊迴應,我想我是無法識別確切的CSS/XPATH定位器和/或子菜單項對Selenium不可見。但正如你所說,它是一個不同的問題。 再次感謝:-) –

相關問題