我有一个带有两个下拉菜单的网页。在一个下拉列表中选择一个选项将通过由 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 来触发 blur 事件
我知道 Javascript 是正确的,因为我可以从 firebug 成功运行它:它会触发第二个下拉列表的更新。但是,从 WebDriver 它似乎没有触发任何东西。
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("document.getElementById('newOrder:shipToAddressType').blur()");
有什么建议么?谢谢你的帮助。
编辑:我尝试在脚本字符串中添加“返回”。也没有工作:
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("return document.getElementById('newOrder:shipToAddressType').blur()");