gpt4 book ai didi

javascript - 通过 WebDriver 的操作不会触发模糊事件

转载 作者:数据小太阳 更新时间:2023-10-29 05:55:22 24 4
gpt4 key购买 nike

我有一个包含两个下拉菜单的网页。在一个下拉列表中选择一个选项将通过由 blur 事件触发的脚本更新另一个下拉列表中的选项列表。当焦点离开第一个下拉菜单时,会触发 blur 事件。当手动浏览页面时,这一切都很好。

但是,当通过 WebDriver 执行相同的步骤时,blur 事件永远不会被触发,因此下拉列表永远不会更新,导致我的脚本失败。

这是我首先选择的下拉列表的 html(并且附有 onblur 脚本:

<select id="newOrder:shipToAddressType" class="fieldRequired"     onblur="PrimeFaces.ab({source:this,event:'blur',process:'newOrder:odShipData',update:'newO>rder:odShipData',partialSubmit:true,oncomplete:function(xhr,status,args)>{focusOnShipToZip();;}}, arguments[1]);" tabindex="47" size="1" name="newOrder:shipToAddressType">
<option selected="selected" value="125">Domestic</option>
<option value="126">International</option>
<option value="127">Military</option>
</select>

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

像我手动那样导航页面
我在下拉列表中进行选择,然后在另一个字段中输入文本以将焦点从下拉列表中移开以触发模糊事件。这没有用。我也试过从下拉列表中跳出,但也不走运。

执行 Javascript 触发模糊事件
我知道 Javascript 是正确的,因为我可以从 Firebug 成功运行它:它触发第二个下拉列表的更新。然而,从 WebDriver 来看,它似乎没有触发任何东西。

JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("document.getElementById('newOrder:shipToAddressType').blur()");

有什么建议吗?谢谢你的帮助。

编辑:我尝试在脚本字符串中添加“return”。也没有用:

JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("return document.getElementById('newOrder:shipToAddressType').blur()");

最佳答案

这里有一些想法:

使用 TAB 转到下一个字段。这将模拟用户按 TAB 键转到下一个字段,理论上应该模拟浏览器的模糊事件。

您可以使用 sendKeys 方法执行此操作:

WebElement element = driver.findElement(By.id('newOrder:shipToAddressType'));
element.sendKeys("\t");

注入(inject) javascript 来模拟 blur 方法。你已经尝试过这个看起来像,但你忘记了 executeScript 的一个重要方面 -- 总是 返回你的代码!

JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("return document.getElementById('newOrder:shipToAddressType').blur()");

最后一件事,包含您正在使用的浏览器的信息会很有帮助,仅供引用。

更新

尝试将焦点直接放在元素上,然后取消焦点(模糊)它:

WebElement element = driver.findElement(By.id('newOrder:shipToAddressType'));
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("arguments[0].focus(); arguments[0].blur(); return true", element);

关于javascript - 通过 WebDriver 的操作不会触发模糊事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16488619/

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