C# Selenium在运行Javascript后失去对浏览器的控制
在Selenium中,当我运行命令时,比如C# Selenium在运行Javascript后失去对浏览器的控制,c#,javascript,selenium,selenium-webdriver,C#,Javascript,Selenium,Selenium Webdriver,在Selenium中,当我运行命令时,比如 document.evaluate("My Xpath", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null) WebDriver失去了对浏览器的控制。没有任何东西超过Javascript执行运行时间,测试将始终失败 我想这与返回一个元素有关,但我在任何地方都找不到它 编辑: 有关守则 public CustomPage Login(string username, string pa
document.evaluate("My Xpath", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null)
WebDriver失去了对浏览器的控制。没有任何东西超过Javascript执行运行时间,测试将始终失败
我想这与返回一个元素有关,但我在任何地方都找不到它
编辑:
有关守则
public CustomPage Login(string username, string password)
{
SendKeys(username, EmailSlot);
SendKeys(password, PasswordSlot);
LoginButton.Click();
while True
{
try
{
if ((driver as IJavaScriptExecutor).ExecuteScript("document.evaluate(\"//a[text() = 'log out'\", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue") != null) break;
}
catch (Exception)
{ }
}
return CustomPage(driver);
}
我们能看到周围的环境和相关的C代码吗?你为什么要通过JavaScript而不是Selenium自己的原生方法来运行XPath?Arran我们现有的代码偶尔使用Selenium的XPath方法。我想看看是否有一个更好的解决方案,可以在一段时间内多次奏效。@Brad,好吧,我的建议是找出为什么有时候有效,有时候失败,而不是完全绕过Selenium。尽管如此,在执行JS时,您必须给Selenium一点提示,让它返回document.evaluate\//a[text='log out',document,null,XPathResult.FIRST\u ORDERED\u NODE类型,null.singleNodeValue作为第一次尝试。如果XPath给您一个结果,Selenium应该将其作为IWebElement返回。