2014-11-20 80 views
0

我無法讓它選擇輸入名稱uxCompanyName。我已經嘗試過使用xpath,selenium IDE和by.id,名稱等。這些都不適合我。任何幫助,將不勝感激。由於如何使用Java在Selenium Webdriver中與此輸入框交互?

我的腳本:

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> 
+0

你得到了什麼錯誤? – Saifur 2014-11-20 19:28:31

回答

0

硒與幀的麻煩。 嘗試

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

然後抓住

+0

這是完整的腳本還是需要添加到某些內容? – 2014-11-20 23:57:42

+0

謝謝,凱爾。它稍作修改。我不確定你的代碼塊是用什麼編寫的,但是我用了下面的代碼: driver.switchTo().frame(「bottom」); driver.findElement(By.xpath(「// input [@ name ='uxCompanyName']」))。sendKeys(「moneta」); – 2014-11-21 17:45:41

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"); 

它會等待幀,切換到它,然後用它的元素進行交互。

+0

謝謝你的回答,蘇里亞。在我給凱爾的回覆中使用了.switchto命令,我得到了它的工作。 – 2014-11-21 22:43:42

+0

好的。好。 「frameToBeAvailableAndSwitchToIt」也會做同樣的事情,它會等待幀加載,然後切換到它。它更可靠地切換到幀,因爲有些時間幀需要一段時間才能完全加載。 – Surya 2014-11-22 04:10:19

0

@Pradish ..您無法檢測到id爲'uxCompanyName'的WebElement的原因是該元素不在您當前的框架中。如果您再次遇到相同的問題,請在對WebElement執行任何操作之前將其包含在下面的行中。 「assertTrue(driver.getPageSource()。contains(」uxCompanyName「));」uxCompanyName可以被WebElement的任何唯一標識替換。如果它是真的,它會進展,如果不是你的腳本將停在同一行。這表明所需的WebElement不在框架中,然後您可以查找該頁面上可用的框架。

希望這可以幫助你找出原因和解決方案。

+0

謝謝,Rupesh!這是一個整潔的小檢查。 – 2014-11-25 18:51:19

+0

@PradishSuhiet:如果你認爲這個答案對你的問題是有益的,那麼請注意它。 – 2014-11-26 05:57:02

+0

我想我需要更多的代表來upvote你。一旦有了這個能力,我一定會回來。 – 2014-11-29 00:01:32

相關問題