簡體   English   中英

Selenium Webdriver Internet Explorer中找不到元素錯誤

[英]selenium webdriver no element found error in internet explorer

我在Internet explorer 8遇到以下錯誤,但在Firefox工作相同(名稱,xpath相同)

"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

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

異常表示驅動程序無法使用名稱識別元素。

首先嘗試識別表。

然后嘗試識別該行

然后嘗試識別TD

然后嘗試識別輸入元素並對其執行操作。

如果有一個表,該行是第3行,而td是第5行,我會這樣寫。

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

您在代碼中使用名稱“用戶名”指定了標簽,並希望通過xPath“用戶名”訪問它。

嘗試

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

代替。

您的HTML在這個問題上有點混亂,但是看起來輸入名為“ username”,而您的xpath正在尋找“ User Name”

您可以使用w3c驗證器檢查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"});

嗨,我收到了這個錯誤,因為在Internet Explorer中,我給了相對的Xpath ...現在我給了絕對的Xpath。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM