使用selenium webdriver访问contentplaceholder属性

时间:2012-12-27 09:12:31

标签: asp.net selenium-webdriver

我需要使用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>

我的testproject代码是:

[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);

        }

    }

提前致谢。

2 个答案:

答案 0 :(得分:2)

感谢您的回复。但它不适用于我的情况。

然而,我能够找到解决我的问题的方法。

我替换了文本框和按钮控件&#39;由id在页面源选项中的浏览器中动态生成的ID。现在,Web驱动程序可以找到这些控件并将值插入到文本框中。

这是我的新代码:

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

上面的代码工作正常:)

答案 1 :(得分:1)

由于您的文本框和按钮位于内容占位符内,因此您可以尝试通过内容占位符访问这些元素。

示例: driver.FindElement(By.Id( “的BodyContent”))(By.Id( “txtName的”))的SendKeys( “萨钦”)。。

希望这对您有所帮助并且有效:)