gpt4 book ai didi

javascript - Selenium IDE 找不到组件

转载 作者:行者123 更新时间:2023-11-29 17:12:55 26 4
gpt4 key购买 nike

我正在使用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com