0

我遇到以下错误,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特别加入..

谢谢,维什瓦斯

4

4 回答 4

2

IE 处理 xpath 表达式的方式与 FF 不同。尝试使用 CSS。

异常表示驱动程序无法识别具有名称的元素。

首先尝试识别表。

然后尝试识别行

然后尝试识别 td

然后尝试识别输入元素并对其执行操作。

如果有一张桌子,该行是第 3 行,td 是第 5 行,我会写这样的东西。

driver.findElement(By.cssSelector("table tr+tr+tr td+td+td+td+td input")).sendkeys("xxxx");
于 2013-01-22T07:21:49.513 回答
0

您在代码中指定了名称为“用户名”的标签,并且您希望使用 xPath“用户名”来访问它。

尝试

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

反而。

于 2013-01-21T15:03:37.723 回答
0

您的 HTML 在问题中有点混乱,但看起来输入被命名为“用户名”并且您的 xpath 正在寻找“用户名”

您可以使用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"});
于 2013-01-21T15:04:06.090 回答
0

嗨,我收到了这个错误,因为在 Internet Explorer 中我给了相对 Xpath...现在我给了绝对 xpath.. 它工作了非常感谢所有花时间帮助我的人..

于 2013-01-23T05:38:14.527 回答