无法使用Xpath找到元素 - Selenium

时间:2016-04-03 08:49:58

标签: c# selenium selenium-ide

我正在尝试点击一个元素,但有一些问题。 首先,我正在切换到一个弹出窗口,这似乎写得很好。

foreach (string handle in _webdriver.WindowHandles)
{
     if (!handle.Equals(parentHandle))
     {
         _webdriver.SwitchTo().Window(handle);
     }
}

然后,我试图通过以下代码单击此弹出窗口中的元素:

var myElement = wait.Until(x => x.FindElement(By.XPath("//td[@id='firstname_d']/div[@class='ms-crm-Input-Container']/input[@id='firstname']")));
myElement.SendKeys("foo");

我收到错误:

  

无法找到包含Xpath的元素

HTML如下:

<tr valign="top">
  <td class="ms-crm-FieldLabel-LeftAlign  FormSection_CellPadding ms-crm-Field-Recommended" id="firstname_c">
  <td id="firstname_d" style="overflow: hidden;" formxmlcolspan="1">
     <div class="ms-crm-Input-Container focus" id="firstname_container">
       <input tabindex="1010" class="ms-crm-Input ms-crm-Text" id="firstname" style="ime-mode: active;" type="text" maxlength="50" attrformat="text" attrpriv="7" attrname="firstname" req="1" value=""/>

我做错了什么?

2 个答案:

答案 0 :(得分:0)

您可以尝试使用ID

driver.FindElement(By.Id("firstname")).SendKeys("foo");

或使用contains

driver.FindElement(By.XPath("//input[contains(@id, 'firstname')]")).SendKeys("foo");
  

修改

您可以在窗口切换后切换到<iframe>

foreach (string handle in _webdriver.WindowHandles)
{
    if (!handle.Equals(parentHandle))
    {
        _webdriver.SwitchTo().Window(handle);
    }
}

_webdriver.SwitchTo().Frame("foo");

_webdriver.FindElement(By.Id("firstname")).SendKeys("foo");

答案 1 :(得分:0)

你可以编写以下代码并试一试                  设置st = driver.getWindowHandles();                  Iterator it = st.iterator();                  String parent = t.next();
                 String child = it.next();                  driver.switchTo()帧(子)。                      WebElement ele = driver.findElement(By.id(&#34; id =&#34; firstname_container&#34;)); ele.sendKeys(&#34;富