gpt4 book ai didi

java - Selenium 的 "sendKeys"方法是否首先对目标元素执行 "click"?

转载 作者:行者123 更新时间:2023-12-01 17:44:13 26 4
gpt4 key购买 nike

我目前正在为小部件编写 cucumber 测试,这些小部件将(并且正在)以不同的技术(不同的 Web 框架、Java Swing [不是真的,但技术上应该是可能的] 等)实现。这些测试旨在通过​​直接模拟用户的输入来描述被测小部件的功能。例如,测试可以表述为“用户打开网页 X,然后点击那里,然后点击那里,然后点击那里,现在我希望这个文本字段包含值 Y”。

我目前实现测试的技术是网络,使用 Selenium。

现在,假设用户想要在文本字段中输入内容,那么用户实际上要做的就是单击文本字段,然后开始输入。就其本身而言,在键盘上键入内容与文本字段没有任何关系 - 只是因为单击将焦点切换到文本字段,文本字段才会接收键盘输入。

现在,Selenium 有一个 sendKeys 方法。这个方法到底是做什么的? javadoc 声明“使用此方法模拟输入元素,这可能会设置其值”。

sendKeys 方法是否模拟单击(就好像首先调用 .click),然后模拟键盘输入,就像真实用户那样?或者它会设置焦点然后开始打字吗?或者它是否完全绕过焦点并简单地将“键盘输入”发送到输入元素?

由于某些小部件在单击时可能会表现出特殊行为,因此我需要知道 Selenium 是否在幕后执行单击,或者我是否必须手动调用它才能真实地模拟用户的行为。

注意:我没有将 cucumber 添加到标签中,尽管与上下文相关,但与实际问题无关

最佳答案

请记住,元素可以通过单击以外的方式获得键盘焦点。例如,用户可以使用 Tab 键浏览表单的元素。

对于 Selenium 和 WebDriver,驱动程序为 sendKeys 方法采取的步骤由 W3C WebDriver Specification 定义。 。为了在模拟按键输入之前将焦点设置到某个元素,该规范又链接到 WHATWG HTML Specification .

聚焦的发生与特定的“单击”操作无关。实际上,给定的规范实现(chromedrivergeckodriver 等)可能会通过单击该元素来“运行聚焦步骤”。我不相信任何实现实际上都会以这种方式运行,但您需要针对各个实现进行验证。

Tl;dr,不,sendKeys 并不一定意味着点击

关于java - Selenium 的 "sendKeys"方法是否首先对目标元素执行 "click"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57480256/

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