Selenium似乎无法识别叠加层

时间:2016-10-12 10:51:35

标签: selenium webdriver e2e-testing

我无法获取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(); }

1 个答案:

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

另外几条评论......

  1. 为什么要导航到谷歌然后到一个地方?您应该可以删除第一个导航?

  2. 我建议您删除隐式等待并仅使用显式等待。

  3. 您真的不想搜索寻找捐赠的整个页面(HTML)文本。它可以是一些书籍或文章的名称,并且当它实际上应该是失败时你记录一个过程。找到您期望(或不期望)包含DONATE的特定元素,并仅搜索该元素的文本,例如下面的代码验证DONATE没有出现在顶部导航部分。

    if (!wd.FindElement(By.CssSelector("nav")).Text.Contains("DONATE"))