我有一个网页,其中有两个下拉列表。通过触发的脚本,选择第一个下拉列表中的选项将更新第二个下拉列表中的选项列表。当焦点从第一个下拉列表移开时,就会触发失焦事件。在手动导航页面时,所有这些都正常工作。
然而,当通过WebDriver执行相同步骤时,失焦事件永远不会被触发,因此下拉列表永远不会被更新,导致我的脚本失败。
以下是我首先选择的下拉列表的HTML代码(拥有onblur脚本附加到它上面):
这是我迄今为止尝试过的方法:
导航到页面,就像我手动操作一样。我在下拉菜单中进行选择,然后在另一个字段中输入文本以将焦点移开下拉菜单,以触发模糊事件。但这并没有起作用。我还尝试了从下拉菜单中切换出去,也没有成功。
执行JavaScript来触发模糊事件。我知道JavaScript是正确的,因为我可以从firebug成功运行它:它会触发第二个下拉菜单的更新。但是,在WebDriver中似乎没有触发任何事件。
然而,当通过WebDriver执行相同步骤时,失焦事件永远不会被触发,因此下拉列表永远不会被更新,导致我的脚本失败。
以下是我首先选择的下拉列表的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()");
.blur()
来返回WebDriver元素。您的js
变量应该持有一个WebDriver元素。如果不是这样,那么就无法正确找到该元素,这就是为什么模糊效果不起作用的原因!如果是这样,我们将从那里继续进行。 - bbbco