1

Selenium Webdriver を使用して、テキスト ボックスとボタンの ID にアクセスする必要があります。contentplaceholder 内に配置されているため、webdriver はコントロールの ID を見つけることができません。contentplaceholder 内にあるコントロールを見つける方法を教えてください。私はこれのためのパスを与える必要があると思います。あなたのアイデアがより役に立ちます。

これは私のaspxコードです:

<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<table>
 <tr>
  <td> <asp:Label ID="lblName" runat="server" Text="Name :" ></asp:Label> </td>
  <td> <asp:TextBox ID="txtName" runat="server" 
          ToolTip="Enter your registered user name"></asp:TextBox> </td>

 </tr>
 <tr>  
  <td> <asp:Label ID="lblPwd" runat="server" Text="Password :" ></asp:Label> </td>
  <td> <asp:TextBox ID="txtPwd" runat="server" 
          ToolTip="Enter your registered password"></asp:TextBox> </td>

 </tr>
 <tr>
  <td> 
      <asp:Button ID="btnLogin" runat="server" Text="Login" onclick="btnLogin_Click" 
          ToolTip="Click to Login"/> </td>
  <td> <asp:Label ID="lblWarning" runat="server" Text=" "></asp:Label> </td>
 </tr>
</table>
</asp:Content>

私のテストプロジェクトのコードは次のとおりです。

[TestMethod()]
    public void TestMethod1()
    {
        //try
        //{
        driver.Navigate().GoToUrl("http://localhost:50294/Login.aspx");
        driver.FindElement(By.Id("txtname")).SendKeys("sachin");            
        driver.FindElement(By.Id("btnLogin")).Click();
        Label lbl = page.FindControl("lblWarning") as Label;
        Assert.AreEqual(lbl, "Inserted successfully");
        }
        catch (Exception er)
        {
            Assert.Fail(er.Message);

        }

    }

前もって感謝します。

4

2 に答える 2

2

お返事をありがとうございます。しかし、私の場合はうまくいきません。

ただし、問題の解決策を見つけることができました。

テキストボックスとボタン コントロールの ID を、ブラウザのページ ソース オプションで動的に生成される ID に置き換えました。これで、Web ドライバーはこれらのコントロールを見つけて、テキスト ボックスに値を挿入できるようになりました。

これは私の新しいコードです:

driver.FindElement(By.Id("MainContent_txtName")).SendKeys("sachin");
driver.FindElement(By.Id("MainContent_btnLogin")).Click();

上記のコードは正常に動作します:)

于 2012-12-27T11:48:44.227 に答える
1

テキスト ボックスとボタンはコンテンツ プレースホルダー内にあるため、コンテンツ プレースホルダーを介してこれらの要素にアクセスすることができます。

: driver.FindElement(By.Id("BodyContent")).(By.Id("txtname")).SendKeys("sachin");

これがあなたに役立ち、うまくいくことを願っています:)

于 2012-12-27T09:21:52.127 に答える