成为Selenium和Java的新手我试图弄清楚如何登录本地Intranet上的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=temp\101023065f3049414ff56b2fb27fb9_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背面=“../ 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
}
我已经想出如何切换到框架,将值输入到Name和Password字段中,但无论我尝试单击“Submit”按钮的方法,它都不起作用(错误:没有这样的元素)。
我的代码:
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,它也不起作用,尽管它可以与其他一些外部站点一起使用)。我非常感谢有关“提交”按钮使用何种定位器的建议(上面代码中的最后一行)。
答案 0 :(得分:2)
我认为By.partialLinkText("Submit")
与您的
<input width="143" type="image" border="0" height="38" tabindex="4" src="../english/images/submit.gif" alt="Submit">
从Selenium documentation开始,您似乎可以尝试选择表单上的任何元素,然后对其执行submit(),这将触发整个表单提交。
例如:
driver.findElement(By.name("SOME-USER-PSWD-TXT")).submit();