InvalidSelectorException использует селектор CSS для поиска элементов, обозначенных атрибутом «data-».

Мотивация

Использовать механизм селектора CSS Selenium вместе с селекторами атрибутов CSS и настраиваемым атрибутом HTML5 data-для адресации определенных крючков для элементов.

Проблема

При использовании описанного выше для поиска элемента, которому присвоено имя класса CSS и атрибут data-, возникает следующее исключение:

Caused by: org.openqa.selenium.remote.ErrorHandler$UnknownServerException: The given selector .gs-a-btn["data-value"] is either invalid or does not result in a WebElement. The following error occurred:
[Exception... "An invalid or illegal string was specified"  code: "12" nsresult: "0x8053000c (NS_ERROR_DOM_SYNTAX_ERR)"  location: "file:///C:/DOCUME~1/eliranm/LOCALS~1/Temp/anonymous6109849275533680625webdriver-profile/extensions/fxdriver@googlecode.com/components/driver_component.js Line: 5956"]
Build info: version: '2.23.1', revision: '17143', time: '2012-06-08 18:59:28'
System info: os.name: 'Windows XP', os.arch: 'x86', os.version: '5.1', java.version: '1.6.0_31'
Driver info: driver.version: unknown
    at .(file:///C:/DOCUME~1/eliranm/LOCALS~1/Temp/anonymous6109849275533680625webdriver-profile/extensions/fxdriver@googlecode.com/components/driver_component.js:6537)

Соответствующий код

public void previous(String type) {
    By cssSelector = By.cssSelector(".gs-a-btn[data-value='" + type + "']");
    driver.findElement(cssSelector).click();
}

Что я пробовал

  • замена одинарных кавычек экранированными двойными кавычками внутри запроса селектора атрибутов.
  • указание селектора атрибута вместо селектора значения атрибута, т.е. ".gs-a-btn[\"значение-данных\"]"скорее ".gs-a-btn[data -значение='" + тип + "']".
  • для поиска информации в справочных материалах, таких как Selenium Reference, для любых ограничений на селекторы атрибутов CSS.в документе конкретно указано, что:

    В настоящее время локатор селектора css поддерживает все css1, css2 и css3. селекторы, кроме пространства имен в css3, некоторые псевдоклассы (:nth-of-type, :n-последний-в-типе, :первый-в-типе, :последний-в-типе, :только-в-типе , :visited, :hover, :active, :focus, :indeterminate) и псевдо элементы( :: первая строка , :: первая буква , :: выбор , :: перед , ::после).

13
задан Eliran Malka 26 July 2012 в 18:52
поделиться