我需要使用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);
}
}
提前致谢。
答案 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( “萨钦”)。。
希望这对您有所帮助并且有效:)