Java/Selenium代码来单击窗体中的按钮,窗体位于框架中



作为新的硒和Java我试图找出如何登录到本地内网的web应用程序(评估Selenium vs SilkTest)。

下面是登录表单的html代码:

<head>
<frameset id="myFrameSet" onload="initPage()" framespacing="0" rows="*,0">
<frame id="ContentFrame" frameborder="NO" noresize="NORESIZE" src="/webapp/servlet/frameserver?name=temp101023065f3049414ff56b2fb27fb9_10102306576e36914ff484fb3e7f90_content261.htm&encoding=UTF-8">
<html>
<head>
<body background="../images/ingbgrnd.gif">
<form id="inputForm" target="_parent" onsubmit="return(onSubmit());" method="post" action="pageserver">
<input type="hidden" value="ACTION_NEXT" name="action">
<div align="left">
<center> </center>
<table width="578" cellspacing="0" cellpadding="3" border="0">
<tbody>
<tr>
<td width="6" align="left"> </td>
<td width="121" align="left">
<label class="clsform" for="SOME-USER-ID">Name:</label>
</td>
<td width="187" align="left">
<input type="text" value="" tabindex="1" size="15" name="SOME-USER-ID" mandatory="yes">
</td>
</tr>
<tr>
<td width="187" align="left">
<input type="password" value="" tabindex="2" size="15" name="SOME-USER-PSWD-TXT" mandatory="yes">
</td>
</tr>
<tr>
<tr>
<td width="6" align="left"> </td>
<td width="316" align="left" colspan="2">
<p align="center">
<input width="143" type="image" border="0" height="38" tabindex="4" src="../english/images/submit.gif" alt="Submit">
</p>
</td>
</tr>
</tbody>
</table>
</div>

在"head"标签下(在|body background="../images/ingbgrnd.gif"|行之前)有一堆css代码(数百行,所以我不在这里粘贴)。下面这些似乎是相关的:

.tablebutton
{
BORDER-BOTTOM: 0px solid;
BORDER-LEFT: 0px solid;
BORDER-RIGHT: 0px solid;
BORDER-TOP: 0px solid;
FLOAT: left;
LEFT: 2px;
PADDING-BOTTOM: 0px;
PADDING-LEFT: 0px;
PADDING-RIGHT: 0px;
PADDING-TOP: 0px;
POSITION: relative
}
.cellbutton
{
PADDING-BOTTOM: 0px;
PADDING-LEFT: 0px;
PADDING-RIGHT: 0px;
PADDING-TOP: 0px
}

我已经知道如何切换到框架,输入值到名称和密码字段,但无论我试图点击"提交"按钮的方法,它都不起作用(错误:没有这样的元素)。

我代码:

driver.get("http://svr/index.html");
driver.manage().window().maximize();        
driver.findElement(By.linkText("English Sign On")).click();
driver.switchTo().frame("ContentFrame");
driver.findElement(By.name("SOME-USER-ID")).sendKeys("user");
driver.findElement(By.name("SOME-USER-PSWD-TXT")).sendKeys("password");
driver.findElement(By.partialLinkText("Submit")).click();

这是一个只能在IE8上工作的应用程序,所以没有firebug选项(尝试过firebug Lite,它也不工作,尽管它可以与其他一些外部网站一起工作)。我将非常感谢关于我使用什么样的定位器"提交"按钮(在上面的代码的最后一行)的建议。

我不认为By.partialLinkText("Submit")匹配你的

<input width="143" type="image" border="0" height="38" tabindex="4" src="../english/images/submit.gif" alt="Submit">

从Selenium文档看来,您可以尝试选择表单上的任何元素,并对其执行submit(),这将触发整个表单提交。

,

driver.findElement(By.name("SOME-USER-PSWD-TXT")).submit();

最新更新