我正在尝试点击一个元素,但有一些问题。 首先,我正在切换到一个弹出窗口,这似乎写得很好。
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=""/>
我做错了什么?
答案 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)