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行目が3行目、5行目がtdの場合、このように書きます。

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

HTMLが質問で少し混乱していますが、入力の名前が「username」であり、xpathが「UserName」を探しているようです。

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

コードで「username」という名前のタグを指定し、xPath「User Name」でアクセスしたいとします。

試す

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

代わりは。

于 2013-01-21T15:03:37.723 に答える
0

こんにちは、インターネット エクスプローラーで相対 Xpath を指定していたため、このエラーが発生していました。今は絶対 Xpath を指定していました。

于 2013-01-23T05:38:14.527 に答える