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

Javascript 如何使用由JS动态生成的WebDriver处理元素,javascript,selenium,webdriver,Javascript,Selenium,Webdriver,在Java和WebDriver的自动化方面,我是一名大三学生,我遇到了以下问题: 搜索客户 从下拉列表中更改客户类型 按保存按钮 结果: 通知div容器中会出现一条消息(由JS/Jquery生成)(请参见下面的代码) 这可以是“保存更改”,也可以是“成功”或“失败”,具体取决于我试图更改的客户 <div id="notifications"> <ul id="noty_inline_layout_container" class="" style="w

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

  • 搜索客户
  • 从下拉列表中更改客户类型
  • 按保存按钮
  • 结果: 通知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>
    
    
    
    • 正在保存更改。。。
    • 成功
    消息在一段时间后消失,notification div容器不再具有子元素,如下所示:

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

    既然JS消息出现并消失,我如何提取它的文本(“保存您的更改”或“成功”)

    您可以使用
    WebElement#getText()
    获取文本

    或者,如果您希望更具体:

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


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

    请提供一个示例并包含必要的代码开始阅读:我添加了代码和示例。
    String text = driver.findElement(By.cssSelector("div#notifications  span.noty_text")).getText();