javascript - Selenium IDE 找不到组件

标签 javascript selenium xpath selenium-ide oracle-adf

我正在使用 Selenium IDE 测试 ADF 应用程序。在某一时刻,自动化测试用例必须单击一个按钮,该按钮有一个指向页面上表格的 partialTrigger 属性,并且在该按钮执行一些后台逻辑后,该表格将填充行,但页面未完全刷新

我面临的问题是,单击按钮后,Selenium IDE 无法找到表行。 Selenium 可能不知道页面的 DOM 更新,但我对此不确定。

到目前为止我尝试过的是:

  1. 我存储了表格第一行中单元格的预期完整 xpath。
  2. 创建了一个自动执行的 JavaScript 函数,用于单击给定路径。
  3. 我在一个简单的 HTML 页面上测试了以下命令,它们运行良好。

Selenium 命令:

<tr>
    <td>store</td>
    <td>//html[1]/body[1]/div[1]/table[1]/tbody[1]/tr[1]/td[1]</td>
    <td>myTableRowPath</td> <!-- store the xpath with name 'myTableRowPath' -->
</tr>
<tr>
    <td>storeEval</td>
    <td>(function(path) { 
         var result = selenium.browserbot.getUserWindow()
                     .document.evaluate(path,
                                        selenium.browserbot.getUserWindow().document,
                                        null, 
                                        8, 
                                        null).singleNodeValue; result.click(); 
                     return null;
        })
        (${myTableRowPath})
   </td>
    <td>elementToBeClicked</td>
</tr>

如何让 Selenium IDE 知道页面上的任何 (AJAX) DOM 更新?

最佳答案

通常,在 Selenium IDE 上处理 AJAX 时,您需要使用 waitForElementPresent 类型的操作。

例如,如果您的表格更改为

<table id="myTable">
  <tbody>
    <tr>
      <td>foo</td>
      <td>bar</td>
    </tr>
  </tbody>
</table>

<table id="myTable">
  <tbody>
    <tr>
      <td>foo</td>
      <td>bar</td>
    </tr>
    <tr>
      <td>something</td>
      <td>else</td>
    </tr>
  </tbody>
</table>

您可以使用:

<tr>
    <td>click</td>
    <td>//input[@id='myButton']</td>
    <td></td>
</tr>
<tr>
    <td>waitForElementPresent</td>
    <td>//table[@id='myTable']/tbody/tr[2]</td>
    <td></td>
</tr>
<tr>
    <td>assertText</td>
    <td>//table[@id='myTable']/tbody/tr[2]/td</td>
    <td>something</td>
</tr>

Here's我测试了一个 JSFiddle(没有 AJAX,但使用慢速 JS 函数来模拟)。

关于javascript - Selenium IDE 找不到组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20499408/

相关文章:

selenium - 将 Arquillian 无人机与 Selenium Grid 结合使用

javascript - 如何使用 Selenium 和 Python 更改输入字段值

python - 如何在 xpath 查询中使用变量?

javascript - 为动态移动的元素添加放大效果

javascript - 根据页面的不同,在 WordPress 中显示不同的内容(如 is_home,但对于其他页面)

javascript - 捕获后退按钮(保留一个历史记录条目,没有可见的主题标签)

javascript - 双重嵌套函数值返回停止进入双重嵌套函数

java - 关注元素 Selenium

html - 使用 xpath 和 R,如何只提取字符串不一致的文本字符串的一部分?

java - Java中NodeList转字符串