如何处理由JS动态生成的WebDriver元素

时间:2015-05-26 14:23:37

标签: javascript selenium webdriver

在Java和WebDriver的自动化方面,我是一名大三学生,我遇到了以下问题:

  1. 搜索客户
  2. 从下拉列表中更改客户类型
  3. 按“保存”按钮。
  4. 结果: 通知div容器中出现一条消息(由JS / Jquery生成)(参见下面的代码) 可以是“保存您的更改”,“成功”或“失败”,具体取决于我要更改的客户。

     <div id="notifications">
                <ul id="noty_inline_layout_container" class="" style="width: 100%; height: auto; margin: 0px; padding: 0px; list-style-type: none; z-index: 9999999;">
                    <li style="overflow: hidden; background: rgb(255, 234, 168) url("data:image/png;base64,iVBORw0KGgoAAAANS")  border: 1px solid rgb(255, 194, 55); cursor: pointer; height: 1px;">
                        <div id="noty_545247324387577860" class="noty_bar">
                              <div class="noty_message" style="font-size: 13px;">
                                  <span class="noty_text">Saving your changes...</span>
                              </div>
                            </div>
                         </li>
                    <li style="overflow: hidden; background: lightgreen url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB=="); border: 1px solid rgb(80, 194, 78); cursor: pointer; height: 1px;">
                        <div id="noty_851025645275431000" class="noty_bar">
                            <div class="noty_message" style="font-size: 13px; ">
                                <span class="noty_text">Success</span>
                              </div>
                            </div>
                        </li>
              </ul>
            </div>
    

    一段时间后消息消失,通知div容器不再有子元素,如下所示:

    <div id="notifications"></div>
    

    如何提取JS消息的文本(“保存更改”或“成功”),因为它会出现并消失?

1 个答案:

答案 0 :(得分:0)

您只需使用WebElement#getText()获取文字。

String text = driver.findElement(By.cssSelector("span.noty_text")).getText();

或者,如果您想要更具体:

String text = driver.findElement(By.cssSelector("div#notifications  span.noty_text")).getText();

然后用text

做你想做的事

确保在消息消失之前执行此操作,否则可能会出现StaleReferenceException。