0

使用以下代码:

<head>
  <body class="layout-two-column unibet uMyAccount">
    <div class="tooltip-container">
      <div id="tooltip" class="tooltip tooltip-error right-center" display: none;">
        <div class="tooltip-content gutter-3 icon icon-small icon-info">**Message 1**</div>
        <div class="tooltip-pointer"></div>
        <div class="tooltip-pointer-decoration"></div>
      </div>
    </div>
    <div id="window">
      <div id="container" class="lobby-theme-3">
        <header id="header">
          <nav id="nav-main">

我需要使用 java 脚本获取Message 2类名更改的位置。tooltip-content gutter-3 icon icon-small icon-error我需要得到错误消息,即Message 2.

试过以下:

//body[contains(@class,'layout-two-column unibet uMyAccount')]//div[contains(@id,'tooltip')]//div[contains(@class,'tooltip-content')

如果使用上面的 xpath,并尝试String className = el.getAttribute("class");它总是获取tooltip-content gutter-3 icon icon-small icon-info类。

4

2 回答 2

1

尝试以下操作:

WebDriverWait wait = new WebDriverWait(driver, 10);
By tooltipSelector = By.xpath("//div[@id='tooltip']//div[contains(@class,'icon-error')]");
WebElement errorTooltip = wait.until(ExpectedConditions.presenceOfElementLocated(tooltipSelector));
String className = errorTooltip.getAttribute("class");

问题:

  1. 你的逻辑是错误的。你需要找到icon-error,不是tooltip-content。由于tooltip-content将永远存在,WebDriver 甚至会在它改变之前找到它。除非你执行sleep.
  2. 您可能想要使用 WebDriverWait,因为该元素是动态创建的。
  3. 你不需要body在你的 xpath
  4. tooltip是 div 的 id,你不需要div[contains(@id,'tooltip')]
  5. #tooltip .icon-error在这种情况下,您可以尝试使用 css 选择器。
于 2013-05-24T08:28:40.657 回答
0

WebDriverWait 等待 = new WebDriverWait(驱动程序, 10);

By tooltipSelector = By.cssSelector("#tooltip .icon-error");

WebElement errorTooltip = driver.findElement(tooltipSelector);

wait.until(ExpectedConditions.presenceOfElementLocated(tooltipSelector));

String className = errorTooltip.getAttribute("class");

请让我知道上述脚本是否正常工作。

于 2014-04-08T06:23:55.563 回答