我无法获取selenium webdriver以识别并点击导航到www.oneplace.com时显示的叠加层的任何部分。叠加是在单击时被解雇的。请参阅下面的我的硒代码
IWebDriver wd = new ChromeDriver();
try {
wd.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(7));
wd.Navigate().GoToUrl("https://www.google.co.uk/);
wd.Navigate().GoToUrl("http://www.oneplace.com/");
wd.FindElement(By.Id("takeoverOverlay")).Click();
if (!wd.FindElement(By.TagName("html")).Text.Contains("DONATE")) {
Console.Error.WriteLine("verifyTextPresent failed");
}
}
finally { wd.Quit(); }
答案 0 :(得分:1)
当您自动化方案时,自动执行用户的操作。用户将关闭弹出窗口做什么?他们会点击右上角的X.在浏览器中右键单击该元素,然后选择Inspect(或您喜欢的浏览器中的任何变体)。 X是
的元素<img class="closeTakeover" ... src="http://cdn.salemweb.net/zcast/shared/close-btn.png?v=1">
因此我们可以使用下面的代码来关闭它。
wd.FindElement(By.CssSelector("img.closeTakeover")).Click();
另外几条评论......
为什么要导航到谷歌然后到一个地方?您应该可以删除第一个导航?
我建议您删除隐式等待并仅使用显式等待。
您真的不想搜索寻找捐赠的整个页面(HTML)文本。它可以是一些书籍或文章的名称,并且当它实际上应该是失败时你记录一个过程。找到您期望(或不期望)包含DONATE的特定元素,并仅搜索该元素的文本,例如下面的代码验证DONATE没有出现在顶部导航部分。
if (!wd.FindElement(By.CssSelector("nav")).Text.Contains("DONATE"))