簡體   English   中英

Xpath無法找到元素-Selenium

[英]Unable to find element with Xpath - Selenium

我正在嘗試單擊一個元素,但出現了一些問題。 首先,有一個我要切換到的彈出窗口,看起來寫得不錯。

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=""/>

我究竟做錯了什么?

您可以嘗試使用ID

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

或使用包含

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

您可以編寫以下代碼並嘗試使用它:set st = driver.getWindowHandles(); Iterator it = st.iterator(); 字符串parent = t.next();
字符串child = it.next(); driver.switchTo()。frame(child); WebElement ele = driver.findElement(By.id(“ id =” firstname_container“)); ele.sendKeys(” foo

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM