Selenium 硒。网络驱动程序。Internet Explorer。无法计算//正文XPath

Selenium 硒。网络驱动程序。Internet Explorer。无法计算//正文XPath,selenium,selenium-webdriver,Selenium,Selenium Webdriver,我希望有人能给我指出正确的方向。我们在Internet Explorer版本8中使用Selenium Webdriver 2.28 我们的测试通过以下方法,定位器参数为{By.XPath://body} private IWebElement WaitAndGetElement(By locator) { var wait = new WebDriverWait(_driver, TimeSpan.FromSeconds(Constants.DefaultWaitTimeSecs));

我希望有人能给我指出正确的方向。我们在Internet Explorer版本8中使用Selenium Webdriver 2.28

我们的测试通过以下方法,定位器参数为{By.XPath://body}

private IWebElement WaitAndGetElement(By locator)
{
    var wait = new WebDriverWait(_driver, TimeSpan.FromSeconds(Constants.DefaultWaitTimeSecs));
    var elementToWaitFor = wait.Until(driver => driver.FindElement(locator));

    return elementToWaitFor;
}
当代码命中该方法时。下面的异常被抛出。这个问题在IE中是可以重现的。我们在Chrome或FireFox中没有遇到这个错误

如果有人能为我们指出正确的方向,我们将不胜感激

非常感谢。 克里斯汀·克拉克

OpenQA.Selenium.InvalidSelectorException:无法计算xpath表达式“//body”,或者不会导致WebElement警告:服务器未提供任何stacktrace信息

命令持续时间或超时:156毫秒 有关此错误的文档,请访问:

构建信息:版本:“2.28.0”,版本:“18309”,时间:“2012-12-11 20:21:18” 系统信息:os.name:'Windows 2003',os.arch:'x86',os.version:'5.2',java.version:'1.6.0_31'会话ID:c72ebe1d-e7f0-4fdb-aab8-9f86b374a89a

驱动程序信息:org.openqa.selenium.ie.InternetExplorerDriver
功能[{platform=WINDOWS,javascriptEnabled=true,cssSelectorsEnabled=true,handlesAlerts=true,browserName=internetexplorer,nativeEvents=true,takesScreenshot=true,version=8}]

不是我最喜欢的方法,但请尝试将XPath表达式更改为//body,它很可能适用于此“修复”


虽然我不建议在IE上使用这些定位器,因为即使在WebDriver上,它们也被证明速度较慢,但如果可能的话,请使用CSS定位器。

如何获得XPATH?它与Firefox XPATH Checker插件一起使用吗?如果是这样,我建议将XPATH与Firebug一起使用。在Firebug中,一旦选择了元素,就可以右键单击该元素并选择复制XPATH

我经常遇到这个问题,使用不同的XPath表达式,我认为这是一个bug。但是我还没有能够在一个最小的测试用例上重现它。我认为在页面加载的某个特定时刻调用findElement时会发生这种情况。如果你能可靠地复制它,请或只是把它添加到这里,我将很乐意帮助你!仅仅复制粘贴XPATH是不够的。通常FIREBUG会使用id属性钩住第一个找到的元素。您可能希望从一些类属性等开始。此外,最好删除[数字]。换句话说,要聪明,用头脑为元素创建最好的XPATH。