[英]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%"> </td>
<td width="30%"> </td>
<td width="65%"> </td>
</tr>
<tr>
<td> </td>
<td colspan="2">
<FONT SIZE="3"><B>Log on</B></FONT>
</td>
<td> </td>
</tr>
<tr><td colspan=4> </td></tr>
<tr>
<td> </td>
<td class="form">User Name</td>
<td class="form">
<input type="text" tabindex="0" size="22" name="username" autocomplete="off" />
</td>
<td> </td>
</tr>
<tr>
<td> </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> </td>
</tr>
<tr>
<td> </td>
<td> </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.