当前位置: 首页 > 知识库问答 >
问题:

Selenium IDE:尽管成功执行了测试步骤,但为什么“元素X=Y未找到”消息?

孔棋
2023-03-14

为什么Selenium IDE会给我以下错误消息,即使它成功单击了UI按钮?我已经尝试了我知道的所有可用的单击、单击和等待、暂停(如图所示)、选项。

精确日志:
[info]执行:|单击|class=按钮保存||
[错误]元素类=按钮保存未找到

HTML:

</tr>
<tr>
    <td>clickAndWait</td>
    <td>id=login</td>
    <td></td>
</tr>
<tr>
    <td>click</td>
    <td>link=Add</td>
    <td></td>
</tr>
<tr>
    <td>waitForElementPresent</td>
    <td>class=icon-capability</td>
    <td></td>
</tr>
<tr>
    <td>click</td>
    <td>link=Capability</td>
    <td></td>
</tr>
<tr>
    <td>waitForElementPresent</td>
    <td>class=btn btn-primary</td>
    <td></td>
</tr>
<tr>
    <td>type</td>
    <td>name=name</td>
    <td>secondly</td>
</tr>
<tr>
    <td>click</td>
    <td>name=create</td>
    <td></td>
</tr>
<tr>
    <td>pause</td>
    <td></td>
    <td></td>
</tr>
<tr>
    <td>click</td>
    <td>class=button save</td>
    <td></td>
</tr>
</tbody></table>
</body>
</html>

共有1个答案

方韬
2023-03-14

我猜是选择器。您正在寻找*[class='按钮保存']

如果您选择的元素是:

// doesn't match
<button id="something" class="save button"></button>

// matches
<button id="something_else" class="button save"></button>

我的猜测是一些动态的事情正在发生。尝试匹配比类更独特的东西。如果它有ID属性,就使用它。如果它没有这个属性,但有一个< code>name属性,就使用它。

如果它除了类之外没有任何可以匹配的东西,那么尝试使用CSS。

css=button.button.save
 类似资料:
  • 编辑:有人在评论中要求我展示我是如何定义链接的:

  • 我使用了一段时间,因为cucumber与JUnit 4,但目前我需要第一次使用它与JUnit 5,它似乎不工作。我有以下依赖项: 我使用的故障安全maven插件配置如下: 测试类如下所示: 在这里,我使用@Tag注释,它取代了JUnit4@类别,以便根据故障保险maven插件中配置的元素选择性地执行测试,如上所述。 fetaures文件位于src/main/test/resources/featu

  • 问题内容: 考虑以下示例: 我不确定Java语言规范中是否有一项规定要加载变量的先前值以便与右侧()进行比较,该变量应按照方括号内的顺序进行计算。 为什么第一个表达式求值,而第二个表达式求值?我本来希望先被评估,然后再与自身()比较并返回。 这个问题与Java表达式中子表达式的求值顺序不同,因为这里绝对不是“子表达式”。需要 加载 它以进行比较,而不是对其进行“评估”。这个问题是特定于Java的,

  • 问题内容: 我已经在开发中成功启用了CORS。我的Golang后端与本地计算机上的Angular前端通信良好。但是,我不知道如何在生产中启用CORS(DigitalOcean上的Ubuntu)。我在Firefox上得到了这个: “跨域请求被阻止:同源策略禁止读取位于http:// localhost:12345 /anteroom的远程资源。(原因:CORS请求未成功)。” 我正在使用system

  • 这个问题与Java表达式中子表达式的求值顺序不同,因为在这里肯定不是“子表达式”。需要加载它进行比较,而不是“求值”。这个问题是特定于Java的,表达式来自一个真实的项目,而不是通常为棘手的面试问题而设计的牵强附会的不切实际的构造。它应该是比较和替换习语的一行替换 它比x86 CMPXCHG指令还要简单,因此在Java中应该使用更短的表达式。

  • 问题内容: Node.js现在具有生成器。 我的理解是,可以使用生成器来编写看起来更线性的代码,并避免回调地狱和厄运样式编码的金字塔。 因此,到目前为止,我的理解是,在生成器内部,代码将执行直到达到“ yield”语句为止。此时,生成器功能的执行将中止。该语句指定一个返回值,该值可以是一个函数。通常,这将是一个阻塞的I / O功能- 通常需要异步执行的功能。 yield的返回函数将返回到任何称为生