我正在使用 Selenium 和 C# 来运行一些测试。我有一个无法找到的元素的问题。我知道它在那里,而且我在 html 中有它。即使知道关于它的一切,我似乎也找不到它。当我使用 nodeJS 时,它很容易定位,但在 C# 中我不能。在尝试了这么多事情之后,我想我会在这里问。
使用以下内容时,我得到 OpenQA.Selenium.NoSuchElementException:
IWebElement Title = driver.FindElement(By.XPath("//*[contains(., 'TextHere')]"));
我尝试使用 css 路径、xpath 和标签,但我什至发现某些东西的唯一情况是带有标签。它不是正确的元素。
我的语法有什么大问题吗?我已经查看了有关此问题的多个线程,并且他们使用的所有语法也都不起作用。
好的,所以我想通了。该元素位于 iframe 内。但不仅如此,它也是由一个在加载时运行的函数创建的。这意味着我不得不延迟等待它加载。这是工作代码,以防有人在查看类似问题:
driver.SwitchTo().Frame(driver.FindElement(By.Id("iFrame id")));
System.Threading.Thread.Sleep(500);
IWebElement Title = driver.FindElement(By.XPath("path to element"));
仅使用 sleep 可能不是最佳选择,但我对此很陌生,并且它有效。如果有人有好的替代品,我很想听听建议。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句