1

我需要使用 selenium webdriver 访问文本框和按钮 ID。由于它被放置在 contentplaceholder 中,webdriver 无法找到控件的 id。请建议我如何找到内容占位符内的控件。我想我需要为此提供路径。你的想法会更有帮助。

这是我的 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 回答