当前位置: 首页 > 知识库问答 >
问题:

Selenium:获取元素的工具提示?

龚凯泽
2023-03-14

我试图从网站中的元素中提取文本。HTML代码如下所示:

<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();
  }

}

共有1个答案

詹唯
2023-03-14

工具提示大多是硬编码的,如果是这样的话,你唯一想做的就是测试它是否显示出来。据我所知,以下是最好的解决方案。

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
    {

    }
}
 类似资料:
  • 首先,我不能使用。getAttribute(“标题”),因为标题属性中没有文本;其次当我将XPath赋给图像并应用时,getText()不起作用。getText()。 谁能帮我一下吗?

  •   selenium是一个非常棒的Web软件测试工具,他对Ajax支持非常好,本人强烈推荐。   软件测试里很重要的一部,就是定位页面的元素,selenium提供如下强大的定位元素的方法。   ● id=id   ● name=name   ● dom=javascriptExpression   ● xpath=xpathExpression   ● link=textPattern   ● c

  • 根据以下示例HTML查找元素下面的元素:

  • 我在使用@findby获取和使用Select元素时遇到了困难。 标记: 注意:我当然正在初始化页面对象:

  • 我有一个标签叫信息。我需要点击信息标签。相同的xpath适用于其他场景,该场景具有相同的信息选项卡和相同的html代码,当我尝试在其他场景中使用该xpath时,却没有发现这样的元素异常。 请帮我解决这个问题 xpath: HTML:

  • 问题内容: 看起来Instagram网站上的for每天都在变化。现在是,明天将是另一回事。例如(我把它缩短了,链接很长): 话虽如此,我需要修复脚本并对其进行硬编码,以便能够抓取该网页。 有人告诉我,我可以用来查找并将其存储以备后用。但是我仍然不知道如何实现这一目标,因此硒或汤可以从中获取并在以后存储或解析。 我现在所得到的就是这个。它有点脏,不是正确的,但是想法就在那里。 运行它时,我得到此输出