无法获取正确的错误消息

时间:2013-05-24 06:57:48

标签: webdriver

使用以下代码:

<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类。

2 个答案:

答案 0 :(得分: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. 您的xpath中不需要body
  4. tooltip是div的ID,您不需要div[contains(@id,'tooltip')]
  5. 在这种情况下,您可以尝试使用css选择器#tooltip .icon-error

答案 1 :(得分:0)

WebDriverWait wait = new WebDriverWait(driver,10);

通过tooltipSelector = By.cssSelector(&#34; #tooltip .icon-error&#34;);

WebElement errorTooltip = driver.findElement(tooltipSelector);

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

String className = errorTooltip.getAttribute(&#34; class&#34;);

请告诉我上述脚本是否正常。