如何使用Java在Selenium Webdriver中与此输入框进行交互?

时间:2014-11-20 19:22:02

标签: java javascript selenium xpath webdriver

我无法选择输入名称uxCompanyName。我尝试过使用xpath,selenium IDE和by.id,名称等等。这些都不适用于我。任何帮助,将不胜感激。感谢

我的剧本:

WebElement element = (WebElement)     ((JavascriptExecutor)driver).executeScript("document.getElementById('uxCompanyName').focus();");

element.findElement(By.id("uxCompanyName")).clear();
element.findElement(By.id("uxCompanyName")).sendKeys("password");

HTML:

<frameset rows="100%" frameborder="0" border="0" framespacing="0">
<frame scrolling="auto" allowtransparency="" src="CompList.aspx" noresize="noresize"     name="bottom">
<html>
<head>
<body onload="document.getElementById('uxBranchID').focus();">
<form id="fm" action="CompList.aspx" method="post" name="fm">
<div>
<script type="text/javascript">
<script language="JavaScript">
<script type="text/javascript">
<link href="menu.css" type="text/css" rel="stylesheet">
<script src="/secure/admin/RadControls/Menu/Scripts/3_5_1/RadMenu_Utils_3_5_1.js"         type="text/javascript">
<script src="/secure/admin/RadControls/Menu/Scripts/3_5_1/RadHelper_3_5_1.js"     type="text/javascript">
<script src="/secure/admin/RadControls/Menu/Scripts/3_5_1/RadBrowser_3_5_1.js" type="text/javascript">
<script src="/secure/admin/RadControls/Menu/Scripts/3_5_1/RadMenu_Globals_3_5_1.js" type="text/javascript">
<script src="/secure/admin/RadControls/Menu/Scripts/3_5_1/RadMenu_3_5_1.js"     type="text/javascript">
<script src="/secure/admin/RadControls/Menu/Scripts/3_5_1/RadMenu_Keyboard_3_5_1.js" type="text/javascript">
<script src="/secure/admin/RadControls/Menu/Scripts/3_5_1/RadImageCache_3_5_1.js" type="text/javascript">
<table id="hroMenu_tbHeader" cellspacing="0" cellpadding="0" border="0" align="Center" style="width:95%;border-collapse:collapse;">
<br>
<table width="95%" cellspacing="0" cellpadding="0" align="center">
<tbody>
<tr>
<td>
<table width="800" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<table id="tblSearch" cellspacing="1" cellpadding="2" border="0" style="background-        color:Silver;width:300px;">
<tbody>
<tr class="StandardRow">
<tr class="StandardRow">
<tr class="StandardRow">
<td>
<b>Company Name:</b>
</td>
<td>
<input id="uxCompanyName" type="text" style="font-size:11px;width:150px;" maxlength="40" name="uxCompanyName">
</td>
</tr>
<tr class="StandardRow">
<tr style="background-color:WhiteSmoke;">
</tbody>
</table>
</td>
<td valign="bottom" align="right">
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<tr>
</tbody>
</table>
</form>
<div id="i1110_g" style="position: absolute; left: -500px; top: -2000px; width: 140px; height: 0px; visibility: hidden; z-index: 901;">
</body>
</html>
</frame>
</frameset>
</html>
</frame>
</frameset>
</html>
</frame>
</frameset>

3 个答案:

答案 0 :(得分:1)

以下代码应该适合您:

WebDriverWait wait = new WebDriverWait(driver,10);
wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt("bottom"));
element.findElement(By.id("uxCompanyName")).clear();
element.findElement(By.id("uxCompanyName")).sendKeys("password");

它将等待帧,切换到它,然后与其中的元素进行交互。

答案 1 :(得分:0)

Selenium的框架有问题。 尝试

getWebDriver().switchTo().frame( getElementById( "frameId" ) );

然后抓住元素

答案 2 :(得分:0)

@Pradish ..你无法检测到具有id&#39; uxCompanyName&#39;的WebElement的原因。元素不在你当前的框架中。如果您再次遇到相同的问题,请在对WebElement执行任何操作之前包含以下行。 &#34;的 assertTrue(driver.getPageSource()包含(&#34; uxCompanyName&#34)); &#34; uxCompanyName可以由WebElement的任何唯一标识替换。如果它是真的,如果不是你的脚本将停在同一行,它将进展。这表示所需的WebElement不在框架中,然后您可以查找该页面上可用的框架。

希望这可以帮助您找出原因和解决方案。