2013-03-14 96 views
4

我有一個鼠標懸停在該圖標,工具提示文本顯示當一個小行李圖標測試工具提示文本。我想通過在Visual Studio中編寫C#代碼來測試它。如何使用鼠標懸停使用硒的webdriver

這裏是行李圖標顯示方式,以html:

<div class="icon_png information icon_baggageyes" title="1 piece included in this fare."></div> 

,這裏是我的代碼測試工具提示:

Actions a = new Actions(driver); 
IWebElement tooTipObject = driver.FindElement(By.XPath("//div[@class='icon_png information icon_baggageyes']")); 
a.MoveToElement(tooTipObject).Click().Build().Perform(); 

問題是,當我調試一步一步上面的代碼,工具提示文本將顯示出來。但是當我運行測試時,工具提示文本現在顯示。

通過在互聯網上搜索,有人說其原因是鼠標不注重行李圖標足夠長的時間的工具提示文本顯示。

但是如何解決這個問題呢?我一直在尋找解決方案,但找不到適合我的解決方案。

而另一個問題是我的代碼:a.MoveToElement(tooTipObject).Click().Build().Perform(); 工具提示文本將只顯示如果我把.Click()在此代碼。但我測試鼠標懸停功能,不應該點擊圖標。這太奇怪了。

回答

2

由於工具提示是由divtitle屬性觸發的,因此如何檢查該屬性值?這將依賴於所有瀏覽器在懸停時顯示title作爲工具提示(據我所知,所有桌面瀏覽器都這樣做)。

周圍的Googling簡單地說,好像這些方針的東西應該工作:

WebElement element = driver.FindElement(
    By.XPath("//div[@class='icon_png information icon_baggageyes']")); 
string titleText = element.getAttribute("title"); 

之後,你可以驗證titleText是如預期。

0

我遇到同樣的問題。如果你說的是,你沒有懸停在該元素足夠長的話,我很困惑,爲什麼該方法被稱爲「移動元素」,而不是正確的OP「移動元素,然後立即從單元分離」

同樣點擊並按住展品對我來說也是一樣,只是移動到一個元素。我認爲這可能是硒的一個缺陷。

這是令人失望的。我想我只是使用點擊,但點擊元素引發了另一組我不想出發的動作,而懸停應該幫助我展示一個工具提示。

我正在使用chromedriver。

+0

我在嘗試類似的測試。這就是我所做的:element_to_click = claim_section.find_element_by_class_name(「arrowBox」) ActionChains(self.driver).move_to_element(element_to_click).perform()然而,問題在於工具提示沒有隱藏。即使我將鼠標懸停在任何其他元素上,它仍然可見。這會導致我的測試失敗。請參閱http://stackoverflow.com/questions/16426416/selenium-webdriver-python-not-able-to-hide-the-tooltip-after-mouse-over-acti – nids 2013-05-08 02:59:57

0

我使用機器人將鼠標懸停在圖標上。我必須校準機器人才能使用硒來更輕鬆地點擊元素。

請參閱此處的答案,瞭解有關使用硒校準機器人的信息。

0

我可能有點晚了,但我發現,工作是:

IWebElement elementToHover = graphRegion.FindElement(By.CssSelector(CSSSelector)); 
Actions hover = new Actions(driver); 

hover.MoveToElement(elementToHover); 
Thread.Sleep(2000); 
hover.Perform(); 

我主要是在Chrome測試跨多個操作系統的組合,以最大化瀏覽器,並沒有睡覺,我跑入顯示工具提示的時間長度問題,主要是在Linux中(Mac上的可靠性較差)。

我有點不確定爲什麼Thread.Sleep(2000)作爲「動作」的一部分執行。我已經嘗試了幾種不同的自定義等待方法,但我只通過2秒或更長時間的明確睡眠來達到所需的可靠性。

我相信有更好的選擇,但這對我很有用!

1

使用Java Robot進行UI交互;機器人在這裏用於控制鼠標動作。

WebElement targetElement = driver.findElement(By.id("value")); 
Point coordinates = targetElement.getLocation(); 
Robot robot = new Robot(); 
robot.mouseMove(coordinates.getX(), coordinates.getY() + 65); //Number 65 should vary 

Thread.sleep(3000); 
String tooltip = driver.findElement(By.id("value"")).getAttribute("title"); 
System.out.println(tooltip);