我使用id作为标识符来查找元素,但是异常堆栈跟踪显示了css选择器

时间:2019-07-02 14:37:45

标签: selenium selenium-webdriver

我正在使用带有Java代码的Selenium Web驱动程序。每当发生org.openqa.selenium.NoSuchElementException时,尽管我使用css selector来查找Web元素,但堆栈跟踪每次都将标识符方法打印为id

我尝试使用xpath标识符,并且使用正确的标识符方法可以打印出完美的堆栈跟踪。我的示例代码。

public void testMethod()
{
    try
    {
        driver.findElement(By.id("test"));
    }
    catch (Exception ex)
    {
        ex.printStackTrace();
    }
}

堆栈跟踪输出:

org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"css selector","selector":"#test"}
  (Session info: chrome=75.0.3770.100)
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
Build info: version: '3.14.0', revision: 'aacccce0', time: '2018-08-02T20:19:58.91Z'
System info: host: 'DTB150', ip: '10.37.55.150', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_181'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities {acceptInsecureCerts: false, browserName: chrome, browserVersion: 75.0.3770.100, chrome: {chromedriverVersion: 75.0.3770.90 (a6dcaf7e3ec6f..., userDataDir: C:\Users\DEV~1.SOL\AppData\...}, goog:chromeOptions: {debuggerAddress: localhost:38152}, javascriptEnabled: true, networkConnectionEnabled: false, pageLoadStrategy: normal, platform: XP, platformName: XP, proxy: Proxy(), setWindowRect: true, strictFileInteractability: false, timeouts: {implicit: 0, pageLoad: 300000, script: 30000}, unhandledPromptBehavior: dismiss and notify}
Session ID: b6c8f6cd722e746281dd59657850e10f
*** Element info: {Using=id, value=test}

检查异常第一行中的方法。它说method: css selector,尽管我正在使用id查找元素。

是某种错误,还是我的代码误解了某些问题?

1 个答案:

答案 0 :(得分:0)

请参见例外Unable to locate element: {"method":"css selector","selector":"#test"}

CSS选择器#中的

代表一个ID。

如果 id test ,并且您正在这样使用它:

driver.findElement(By.id("test"));

如果找不到ID,则异常应与ID相关。

但是,如果您像

一样使用它
driver.findElement(By.cssSelector("#test"));

您将获得与OP中上述相同的异常。