c# - 使用 C# 在 Selenium 中处理窗口弹出窗口

标签 c# selenium xpath

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

这里抛出的异常是“无法找到字段名称”。

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

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

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

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

希望对您有所帮助...:)

关于c# - 使用 C# 在 Selenium 中处理窗口弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38639191/

相关文章:

c# - 为什么 string interned 但有不同的引用?

javascript - 如何将两个方法合并为一个(.style + .getcompulatedstyle)

javascript - 使用 python + selenium 单击按钮

java - 是否可以从被调用的方法中写入 testng 测试的名称?

asp.net - 使用 ASP.Net 使用模板和 XPath 生成 WordML 报告

xml - xsl/xpath 选择最多的 sibling ,但不选择下一个相似的 sibling

c# - 在 C# UpdatePanel 更新后更新 JavaScript

c# - 无法从 C# Windows 应用程序连接到 MySQL

c# - 使用 Awesomium 捕获网络错误

sql-server - sql 查询 varchar(max) 列以根据其子级之一的值选择一个元素