我试图在窗口弹出窗口中传递名字,姓氏等值。我正在附上页面的屏幕截图。页面后面的Html代码:
<input type="text" name="lastname" value="" onblur="capAll(this);" class="critfont" size="22" maxlength="16">
我尝试检查它并复制Xpath,但它无法找到Element并抛出异常。
我的C#代码是:
var wa = new WebDriverWait(Driver.Instance, TimeSpan.FromSeconds(10));
var LN = wa.Until(ExpectedConditions.ElementIsVisible(By.XPath("//*[@id='pageBodyNoHeader']/form/table[2]/tbody/tr[1]/td[2]/input")));
LN.Click();
LN.SendKeys("Aerere")
当我运行此代码时,它给我一个异常,它在10秒后超时。
我也试过这段代码:
Thread.Sleep(1000);
Driver.Instance.FindElement(By.XPath("//*[@id='pageBodyNoHeader']/form/table[2]/tbody/tr[1]/td[2]/input")).Click();
Driver.Instance.FindElement(By.XPath("//*[@id='pageBodyNoHeader']/form/table[2]/tbody/tr[1]/td[2]/input")).SendKeys("Whatever");
此处抛出的异常是&#34;它无法找到字段名称&#34;。
为了切换到窗口弹出窗口,我使用了以下代码:
Driver.Instance.SwitchTo().Window(Driver.Instance.WindowHandles.Last());
Driver.Instance.Manage().Window.Maximize();
答案 0 :(得分:0)
我认为您的xpath
可能存在问题,您应该尝试使用By.Name
,如下所示: -
var wa = new WebDriverWait(Driver.Instance, TimeSpan.FromSeconds(10));
var LN = wa.Until(ExpectedConditions.ElementExists(By.Name("lastname")));
LN.Click();
LN.SendKeys("Aerere");
注意: - 确保此元素不在任何frame
或iframe
内。如果它在里面,那么您需要在找到元素之前切换frame
或iframe
: - Driver.Instance.SwitchTo().Frame("frame name or id");
希望它有帮助...:)