2

html代码:

<iframe title="javascript:''" src="PageName.aspx" _events="[object Object]">
    <htlml>
        <head>
            <body>
                 <form name="FormName">
                      <div>
                          <span>
                               <input name="ButtonName>

我的问题:如何找到名称为“ButtonName”的元素?我当前的 C# 代码

//To find the iframe
IWebElement Object = driver.FindElement(By.XPath("XPath to the iframe");   //works
//To switch to and set focus to the iframe
driver.SwitchTo().Frame(Object);  //works

//To find element with name "ButtonName"
IWebElement Button = driver.FindElement(By.Name("ButtonName"));  //error: cannot find the element 

任何帮助表示赞赏。

4

2 回答 2

2

请使用:driver .FindElement(By.Name("ButtonName"));

试试这个代码:

默认.aspx

<html xmlns="http://www.w3.org/1999/xhtml">
  <head runat="server">
    <title></title>
  </head>
  <body>
    <iframe src="Default2.aspx"></iframe>
  </body>
</html>

默认2.aspx:

<html xmlns="http://www.w3.org/1999/xhtml">
  <head runat="server">
    <title></title>
  </head>
  <body>
    <form id="form1" runat="server">
      <div>
        <span>
          <input type="button" name="ButtonName" class="test" onclick="alert(1);" />
        </span>
      </div>
    </form>
  </body>
</html>

我通过 Visual Studio 运行 Default.aspx。然后,我在控制台应用程序中使用了 Default.aspx 的 URL。我在控制台应用程序的 main 函数中编写了以下代码:

FirefoxDriver driver = new FirefoxDriver
{
    Url = "http://localhost:13764/WebSite1/Default.aspx"
};

IWebElement objecElement = driver.FindElement(By.XPath("//html//body//iframe"));
driver.SwitchTo().Frame(objecElement);
driver.FindElement(By.Name("ButtonName")).Click();

当我运行我的控制台应用程序时,我在我的 Firefox 窗口中看到一个警报,该窗口由上述代码启动。

于 2013-10-21T15:09:42.817 回答
0

我昨天回答了一个类似的问题。您将元素放在 IWebElement 变量中并且没有使用它。

要么按照user197586指出的那样做:

driver.FindElement(By.Name("ButtonName"));

或者对元素变量做一些事情:

IWebElement Button = driver.FindElement(By.Name("ButtonName"));
Button.DoSomething();

如果您只是检查某个元素是否出现,则无需将其分配给 IWebElement 变量。如果您稍后要使用该元素,请确保您实际使用它。

于 2013-10-22T20:32:20.887 回答