Selenium:获取元素的工具提示? [英] Selenium: Getting ToolTip of an element?

查看:82
本文介绍了Selenium:获取元素的工具提示?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试从站点中的元素中提取文本. HTML代码是这样的:

I am trying to extract the text from an element in the site. The HTML code is something like this:

<p class= "nav_p">
" Give it purpose—fill it with books, movies, mobiles, cameras, toys and fashion jewellery."
</p>

下面是我的TestNG代码:

package TestNG;    
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.interactions.Action;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.annotations.Test;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.AfterTest;

public class Tooltip {


    WebDriver driver;
    WebDriverWait wait;
    By stayOn=By.cssSelector("span[class='redir-a-button-sec-center']");
    By cart=By.cssSelector("span[class='nav-line-2']");


  @Test
  public void cart() throws Exception {
      driver.navigate().to("http://amazon.com");
      driver.manage().window().maximize();
      new WebDriverWait(driver, 5);
      driver.findElement(stayOn).click();


 Actions builder=new Actions(driver);

 WebElement elem=driver.findElement(By.xpath(".//*[@id='nav-cart']"));

 Action action = builder.moveToElement(elem).build();
 action.perform();
 Thread.sleep(2000);


WebElement elem1=driver.findElement(By.cssSelector("p[class='nav_p ']"));
String str=elem1.getAttribute("paragraph");

System.out.println(str);

  }
  @BeforeTest
  public void beforeTest() {

      System.setProperty("webdriver.chrome.driver", "E:\\selenium\\lib\\chromedriver_win32\\chromedriver.exe");
      driver=new ChromeDriver();

  }

  @AfterTest
  public void afterTest() {

      driver.quit();
  }

}

推荐答案

工具提示大多是硬编码的,如果是这种情况,您(大概)唯一想做的就是测试是否显示了该提示.根据我的知识,以下是最佳解决方案.

Tooltips are mostly hardcoded and if that's case the only thing you(probably) want to do is to test if that's displayed or not. The following would be the best solution according to my knowledge.

public void TestToolTip()
{
    //Assuming that's the only element with that class name
    //If that's not case adjust the selector accordingly
    //you also have to make sure the element exist as well
    //otherwise it will throw NoSuchElement(or similar) exception
    By by = By.cssSelector("p.nav_p");

    WebElement toolTipElement = driver.findElement(by);
    //the following action should make the tooltip visible
    //if this is not the element on which the click
    //event generates tool to visible, adjust accordingly.
    toolTipElement.click();


    //In this stage just check if the element is visible/displayed or not
    if (!toolTipElement.isDisplayed() || !toolTipElement.getText().contains("Give it purpose—fill it with books, movies, mobiles, cameras, toys and fashion jewellery."))
    {
        //is not displayed or does not contain the expected text so fail the test
        Assert.fail();
    }
     else
    {

    }
}

这篇关于Selenium:获取元素的工具提示?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆