2013-01-21 83 views
0

我收到以下錯誤Internet explorer 8Firefox工作相同(這兩個名字,XPath的相同)硒的webdriver元素沒有發現錯誤在Internet Explorer

"Unable to find element with name == username (WARNING: The server did not provide any stacktrace information)" 

我的HTML看起來像

<class=form>User Name 

<INPUT tabIndex=0 size=22 name=username autocomplete="off"\> 

class=form>Password 

<INPUT tabIndex=0 onkeypress="checkCapsLock(event)" value="" size=22 type=password name=password autocomplete="off\> 

我的JAVA代碼:

File file = new File("D:/vishwas/Selenium/IEDriverServer.exe");  
System.setProperty("webdriver.ie.driver", file.getAbsolutePath());  
WebDriver driver = new InternetExplorerDriver();  
driver.get("http://10.26.210.74:9080/cbaUserAdmin/");  
WebElement Name = driver.findElement(By.xpath("//input[@name='username']"));  
Name.sendKeys(new String[]{"username"});  
WebElement Pass = driver.findElement(By.xpath("//input[@name='password']"));  
Pass.sendKeys(new String[]{"password"}); 

此頁面的HTML代碼:

<table bgcolor="#ffffd0" cellPadding="1" cellSpacing="1" border=0 > 

      <tr> 
       <td width="5%">&nbsp;</td> 
       <td width="30%">&nbsp;</td> 
       <td width="65%">&nbsp;</td> 

      </tr> 
      <tr> 
       <td>&nbsp;</td> 
       <td colspan="2"> 
        <FONT SIZE="3"><B>Log on</B></FONT> 
       </td>   
       <td>&nbsp;</td>      
      </tr> 
      <tr><td colspan=4>&nbsp;</td></tr> 
      <tr> 
       <td>&nbsp;</td> 
       <td class="form">User Name</td> 
       <td class="form"> 
        <input type="text" tabindex="0" size="22" name="username" autocomplete="off" /> 
       </td>   
       <td>&nbsp;</td>      
      </tr> 
      <tr> 
       <td>&nbsp;</td>    
       <td class="form">Password</td> 
       <td class="form"> 
        <input type="password" tabindex="0" name="password" size="22" autocomplete="off" onKeyPress="checkCapsLock(event)"/> 
        <!--<span id="spanCaps" class="PopupBox" style="margin-left:10;vertical-align:bottom;">Caps Lock is <b>ON</b></span>--> 
       </td> 
       <td>&nbsp;</td>     
      </tr> 

      <tr> 
       <td>&nbsp;</td> 
       <td>&nbsp;</td> 
       <td class="form" > 
        <span id="spanCaps" class="PopupBox">Caps Lock is <b>ON</b></span> 
        <input type="submit" name="submit" tabindex="0" value="Login"> 

請幫助我,因爲我不知道爲什麼我會收到在Internet explorer特別..

感謝, Vishwas

+0

請提供實際的HTML。你提供的不是HTML。 – Arran

+0

@Arran ...兩個文本框有「用戶名」和「密碼」。我想在這些文本框中輸入字符串。我得到錯誤,該名稱或xpath元素是在Internet Explorer中找不到.. PS:它在Firefox中工作。 –

+0

什麼版本的Firefox?什麼版本的Selenium?什麼版本的IE驅動程序?什麼OS? – Arran

回答

2

方式IE處理XPath表達式與FF不同。嘗試使用CSS。

異常說驅動程序無法識別具有名稱的元素。

首先嚐試識別表格。

然後試圖找出行

然後試圖找出TD

然後嘗試識別輸入元件和在其上執行動作。

如果有一個表,行是第三行,td是第五行,我會寫這樣的東西。

driver.findElement(By.cssSelector("table tr+tr+tr td+td+td+td+td input")).sendkeys("xxxx"); 
+0

請你解釋一下,因爲我不怎麼執行CSS選擇器的查找元素。 –

+0

我已經更新了答案。請看看它。希望能幫助到你。 –

+0

我試過了你上面提到的方式,但是我得到的是同樣的錯誤:( –

0

您指定的代碼標籤名稱爲「用戶名」和您想使用xPath「用戶名」訪問它。

嘗試

WebElement Name = driver.findElement(By.xpath("//input[@name='username']")); 

代替。

+0

我試過WebElement Name = driver.findElement(By.xpath(「// input [@ name ='username']」));和 driver.findElement(By.name(「username]」)),但都dint工作顯示相同的錯誤 –

0

你的HTML是位問題搞砸了,但它看起來象輸入被命名爲「用戶名」和你的XPath是尋找「用戶名」

您可以使用w3c validator你的HTML有效性檢查。
瀏覽器將嘗試通過對結構進行一些假設來處理無效的HTML,並且可能會發生這種情況並導致xpath不匹配。

也許你的HTML應該是這個樣子:

<form> 
    User Name <input tabIndex="0" size="22" name="username" autocomplete="off"> 

    Password <input tabindex="0" onkeypress="checkCapsLock(event)" value="" size="22" type="password" name="password" autocomplete="off"> 
</form> 

作爲替代方案,你可以用CSS查找領域:

WebElement Name = driver.findElement(By.cssSelector("input[name=username]")); 
Name.sendKeys(new String[]{"username"});   
WebElement Pass = driver.findElement(By.cssSelector("input[name=password]"));  
Pass.sendKeys(new String[]{"password"}); 

或名稱

WebElement Name = driver.findElement(By.name("username")); 
Name.sendKeys(new String[]{"username"});   
WebElement Pass = driver.findElement(By.name("password"));  
Pass.sendKeys(new String[]{"password"}); 
+0

我試過WebElement名稱= driver.findElement(By.xpath(「//輸入[@名稱='用戶名'] 「));和driver.findElement(By.name(「username」))),但都dint工作顯示相同的錯誤 –

+0

我已經更新了答案,以解決一些潛在的HTML結構問題,幷包括一個鏈接到W3C HTML驗證器 – diffa

+0

我無法驗證在W3C,因爲它是受保護的... –

0

您好我遇到這個錯誤在Internet Explorer中我給相關的XPath ...現在我給了絕對的XPath ..它的工作非常感謝所有誰花自己的時間來幫助我..