我正在使用供应商开发的网页(SAP BusinessObjects InfoView 登录页面)并尝试识别然后选择页面上的下拉元素。无论我尝试什么,我都会遇到异常:
require 'watir-webdriver'
ie = Watir::Browser.new
ie.goto "http://svr-boj-bop-01.mgc.mentorg.com:8080/InfoViewApp"
ie.select_list(:id, "authenticationSelectBox").select("secLDAP")
#=> 'error: "unable to locate element, using :id=>"authenticationSelectBox", :tag_name=>"select"....'
我已经安装了 FireFox 和 Firebug,我可以使用 Firebug 来选择提供有关该元素的信息的元素。我试图指定 :id, :name, .div, .browser, .frame, ...没有任何改变错误。我怀疑内部框架正在根据“身份验证”的选择动态创建页面,但我不知道如何检查/验证这种情况。
我已经搜索并尝试了该网站上的大多数建议,但没有任何帮助。
该页面有很多 Java 代码、表单等。这是我正在尝试搜索元素的页面的一个片段:
<body onload="logonPageLoad()">
<div class="logonContainer">
<div class="logonIFrame">
<iframe id="infoView_home" width="80%" frameborder="0" align="center" title="Log On to InfoView" name="infoView_home" onload="resizeFrameToContent("infoView_home")" src="jsp/listing/blank.jsp" style="height: 287px;">
<html class="logon_body">
<body class="logon_body" onload="loadInit();">
<div class="logon_body">
<div id="logonCredentials">
<form action="../../../PartnerPlatformService/service/app/logon.object" method="POST" name="logonForm">
<div class="logon_table">
<div id="authentication" class="logon_input">
<label class="logon_input_label" onclick="businessobjects.webutil.accessibility.setFocusOnElement('authenticationSelectBox'); return false;" tabindex="-1" for="authenticationSelectBox"> Authentication: < /label>
<select id="authenticationSelectBox" class="logonSelectBox" onchange="SetAuthType(false);resizeFrameToContent('infoView_home')" name="authType">
<option value="secEnterprise" selected=""> Enterprise `</option>
<option value="secLDAP"> LDAP </option>
<option value="secWinAD"> Windows AD </option>
<option value="secSAPR3"> SAP</option>
</select>