使用C#

时间:2016-07-28 14:21:30

标签: c# selenium xpath

我试图在窗口弹出窗口中传递名字,姓氏等值。我正在附上页面的屏幕截图。页面后面的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;。

有人可以帮忙吗?谢谢enter image description here

为了切换到窗口弹出窗口,我使用了以下代码:

Driver.Instance.SwitchTo().Window(Driver.Instance.WindowHandles.Last());
Driver.Instance.Manage().Window.Maximize();

1 个答案:

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

注意: - 确保此元素不在任何frameiframe内。如果它在里面,那么您需要在找到元素之前切换frameiframe: - Driver.Instance.SwitchTo().Frame("frame name or id");

希望它有帮助...:)