2017-08-01 89 views
0

我已經編寫了下面的代碼來從應用程序中檢索工具提示文本。但它總是傳遞值作爲空(「」) 假定應用程序是ToolsQA「http://demoqa.com/」我想拿http://demoqa.com/tooltip/的提示文字「您的年齡」從Java中的Selenium WebDriver中檢索工具提示文本

請參考下面我使用的代碼。

public String getToolTipText(String xpath) throws InterruptedException{ 

     xpath = "//div[@class='inside_contain']//input"; 
     WebElement mainElement = driver.findElement(By.xpath(xpath)); 
     Actions act = new Actions(driver); 
     //act.moveToElement(mainElement).build().perform(); 
     act.clickAndHold(mainElement).build().perform(); 
     Thread.sleep(5000); 
     String tooltiptextreal = mainElement.getAttribute("title"); 

     return tooltiptextreal; 
    } 

斷言:

String TooltipText = "We ask for your age only for statistical purpose."; 
    Assert.assertEquals(pToolsQAWidgetTooltipPageDom.getToolTipText(), TooltipText); 

輸出:

java.lang.AssertionError: expected [We ask for your age only for statistical purpose.] but found [] 

回答

0

這裏是回答你的問題:

要檢索的工具提示文本We ask for your age only for statistical purpose.您可以使用下面的代碼塊。以下代碼塊將工具提示提取爲We ask for your age only for statistical purpose.並在控制檯上打印。

package demo; 

import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.firefox.FirefoxDriver; 
import org.openqa.selenium.interactions.Actions; 
import org.testng.annotations.Test; 

public class Q45433269_Tooltip 
{ 
    @Test 
    public void getToolTipText() throws InterruptedException 
    { 
     System.setProperty("webdriver.gecko.driver", "C:\\Utility\\BrowserDrivers\\geckodriver.exe"); 
     WebDriver driver = new FirefoxDriver(); 
     driver.navigate().to("http://demoqa.com/tooltip/"); 
     driver.findElement(By.id("age")).click(); 
     Actions act = new Actions(driver); 
     WebElement age_purpose = driver.findElement(By.xpath("//div[contains(@id, 'ui-id-')]/div[@class='ui-tooltip-content']")); 
     act.moveToElement(age_purpose).perform(); 
     String tooltiptextreal = age_purpose.getText(); 
     System.out.println("Tooltip text is : "+tooltiptextreal); 
    } 
} 

在控制檯上的輸出如下:

Tooltip text is : We ask for your age only for statistical purposes. 
PASSED: getToolTipText 

=============================================== 
    Default test 
    Tests run: 1, Failures: 0, Skips: 0 
=============================================== 

讓我知道如果這個回答你的問題。

+0

非常感謝,這工作得很好。還有一件事要澄清。因爲我可以看到xpath被定義爲「// div [contains(@id,'ui-id - ')]/div [@ class ='ui-tooltip-content']」請你澄清你是怎麼做到的派生它,因爲即使我們在檢查元素中搜索到xpath,它也不會顯示可能的匹配。 –

+0

@NickW很高興能夠幫助你:)如果你仔細看看,你會發現'id'是動態的。因此,我使用'contains',但是接下來讀到了對類'ui-tooltip-content'的引用 – DebanjanB

0

當你得到你的鼠標移到該輸入的 「標題」 屬性被刪除(請與瀏覽器的開發工具),這樣你無法獲得適當的價值。

enter image description here

如果你需要 「title」 屬性值試着從你的代碼刪除

Actions act = new Actions(driver); 
//act.moveToElement(mainElement).build().perform(); 
act.clickAndHold(mainElement).build().perform(); 

+0

我刪除您的評論的一部分,但它仍然給出了同樣的結果: 新代碼: 公共字符串getToolTipText(字符串的XPath)拋出InterruptedException的{ \t \t \t \t WebElement mainElement = driver.findElement(By.xpath (xpath的)); \t \t // Actions act = new Actions(driver); \t \t //act.moveToElement(mainElement).build()。perform(); \t \t //act.clickAndHold(mainElement).build()。perform(); \t \t Thread.sleep(5000); \t \t String tooltiptextreal = mainElement.getAttribute(「title」); \t \t \t \t return tooltiptextreal; \t} –

相關問題