C# 从硒中寻找元素
我正在使用Selenium和C#来运行一些测试。我找不到一个元素存在问题。我知道它就在那里,我有html格式的。即使知道它的一切,我似乎也找不到它。当我使用nodeJS时,很容易找到它,但在C#中我就是找不到。在尝试了这么多东西之后,我想我会在这里问 使用以下命令时,我会得到OpenQA.Selenium.NoSuchElementException:C# 从硒中寻找元素,c#,html,selenium,selenium-webdriver,C#,Html,Selenium,Selenium Webdriver,我正在使用Selenium和C#来运行一些测试。我找不到一个元素存在问题。我知道它就在那里,我有html格式的。即使知道它的一切,我似乎也找不到它。当我使用nodeJS时,很容易找到它,但在C#中我就是找不到。在尝试了这么多东西之后,我想我会在这里问 使用以下命令时,我会得到OpenQA.Selenium.NoSuchElementException: IWebElement Title=driver.FindElement(By.XPath(“/*[包含(,'texthhere')]”) 我尝
IWebElement Title=driver.FindElement(By.XPath(“/*[包含(,'texthhere')]”)代码>
我尝试使用css路径、xpath和标记,但我发现的唯一情况是使用标记。而且它不是正确的元素
是不是我的语法有什么大问题?我已经研究了多个线程,它们使用的所有语法也都不起作用 在两次调用contains函数之间说或
//*[contains(text(), 'About us') or contains(text(), 'about us')]
或者使用translate函数使xpath不区分大小写
//*[contains(translate(text(), 'ABOUTS', 'abouts'), 'about us')]
当您使用Contain text时,请确保Contain text是唯一的,否则您将获得结果列表,并根据您的条件对其进行迭代 好吧,我想出来了。元素位于iframe中。但不仅如此,它也是由一个加载运行的函数创建的。这意味着我不得不延迟等待它加载。
以下是工作代码,以防任何人看到类似问题:
driver.SwitchTo().Frame(driver.FindElement(By.Id("iFrame id")));
System.Threading.Thread.Sleep(500);
IWebElement Title = driver.FindElement(By.XPath("path to element"));
仅仅使用睡眠可能不是最好的,但我对这方面还很陌生,而且很有效。如果有人有一个好的替代者,我很乐意听取建议。这听起来像是“iframe中的元素”或“需要等待异步元素”。没有HTML,很难确定。。。