我正在尝试在弹出窗口中传递名字、姓氏等值。我附上页面的截图。页面后面的Html代码:
<input type="text" name="lastname" value="" onblur="capAll(this);" class="critfont" size="22" maxlength="16">
我尝试检查它并复制 Xpath,但它找不到元素并抛出异常。
我的 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");
这里抛出的异常是“无法找到字段名称”。
为了切换到弹出窗口,我使用了以下代码:
Driver.Instance.SwitchTo().Window(Driver.Instance.WindowHandles.Last());
Driver.Instance.Manage().Window.Maximize();
最佳答案
我认为您的 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");
希望对您有所帮助...:)
关于c# - 使用 C# 在 Selenium 中处理窗口弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38639191/