Условные имена classов не поддерживают ошибку в WebDriver

У меня есть метод подсчета количества элементов в divs и возврата их числа.

  public int getNumberOfOpenBets() { openBetsSlip = driver.findElement(By.id("form_open_bets")); openBets = openBetsSlip.findElements(By.className(" cashout_noCash")); return openBets.size(); } 

Это источник страницы

 

WebDriver выбрасывает следующую ошибку: Объединенные имена classов не поддерживаются. Рассмотрите возможность поиска одного имени classа и фильтрации результатов или используйте селекторов CSS.

 org.openqa.selenium.InvalidSelectorException: Compound class names are not supported. Consider searching for one class name and filtering the results or use CSS selectors. For documentation on this error, please visit: http://seleniumhq.org/exceptions/invalid_selector_exception.html Build info: version: '2.31.0', revision: '1bd294d185a80fa4206dfeab80ba773c04ac33c0', time: '2013-02-27 13:51:26' System info: os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.7.0_17' Driver info: driver.version: unknown at org.openqa.selenium.By.className(By.java:131) at elements.betslip.Betslip.getNumberOfOpenBets(Betslip.java:136) at testSomething(SomethingTest.java:117) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229) at org.junit.runners.ParentRunner.run(ParentRunner.java:309) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) 

РЕДАКТИРОВАТЬ:

Как оказалось, WerbDriver не поддерживает пробелы в именах classов, omg.

Не могли бы вы, ребята, помочь мне использовать селектор CSS в этой ситуации, чтобы найти элементы?

Это точно так, как ожидалось. Если ваше имя classа содержит пробел, WebDriver увидит его как «составной селектор». Вы можете либо удалить пробел в By.className() , который все равно должен найти By.className() вам элементы; или вы можете перейти к поиску с помощью селекторов CSS, используя что-то вроде By.cssSelector(".cashout_noCash") , которые предлагают гораздо большую гибкость для аналогичной функциональности. Это именно то, что говорит сообщение об исключении.

Вы можете включать селектор имен сложных classов, не оставляя промежутков между ними.

Например, если ваш div :

 

Тогда ваш selector будет:

 driver.findElement(By.cssSelector("k-calendar-container.k-popup.k-group.k-reset")); 

Вот ответ Ruby, если кому-то это нужно. Я пришел к выводу, что некоторые из решений, которые работали над java выше, либо не работают на моей машине, либо вообще не работают для Ruby (хотя я не уверен, что это так).

Если html:

  access web portal  

Формат для поиска этого элемента:

 logInBtn = driver.find_element(:css, ".button.orange-bg") 

Я использовал это, потому что следующее не получилось:

  1. Замена пробелов на «.» и поиск с помощью селектора css (вам нужно поставить период спереди).

  2. Удаление пробелов в имени составного classа и использование локатора имен classов.

 driver.findElements(By.cssSelector(".cashout_noCash")); 
  • Как разрешить ElementNotInteractableException в Selenium webdriver?
  • Возвращаемое значение в функции из блока обещаний
  • Обновление веб-страницы по WebDriver при ожидании определенного состояния
  • Не удается открыть браузер с Selenium после обновления Firefox
  • Selenium Webdriver - нажмите на скрытые элементы
  • Как обрабатывать загрузку файлов Windows с помощью Selenium WebDriver?
  • Selenium c # Webdriver: Подождите, пока не появится элемент
  • Как выбрать элемент из выпадающего списка с помощью Selenium WebDriver с java?
  • Нужно найти элемент в seleniumе css
  • Может ли Selenium Webdriver открывать windows браузера в фоновом режиме?
  • Лучший способ отслеживания и итерации вкладок и окон с помощью WindowHandles с использованием Selenium
  • Interesting Posts

    Внешний жесткий диск непризнан в Win10, но отлично работает в Win8.1

    Как удалить программу, которая не отображается в программах и функциях?

    Установите стиль TextView (жирный или курсив)

    Как я могу прочитать статус SMART на моем жестком диске в Windows 7?

    Android Удалить запрос

    Получить путь к файловому каталогу из пути к файлу

    Использовать Visual Studio 2012 и компилироваться со старым набором инструментов платформы?

    Поддержка Visual Studio для новых стандартов C / C ++?

    Как создать несколько экземпляров модели с помощью Django Rest Framework?

    Попытка установить исправления для MSU приводит к тому, что «Поиск обновлений на этом компьютере …» длится вечно

    Хорошая цифровая ручка, которая интегрируется с Microsoft OneNote

    Windows 8 планшетная клавиатура для док-станции

    Что такое стиль без точек в функциональном программировании?

    Читайте из файла, начиная с конца, подобно хвосту

    Как пакет достигает своего пункта назначения?

    Давайте будем гением компьютера.