Хобрук: Ваш путь к мастерству в программировании

ElementNotVisibleException: элемент в настоящее время не виден, поэтому с ним нельзя взаимодействовать.

Я получаю ElementNotVisibileException, но на этой странице нет повторяющихся имен с названием «История», но есть «История звонков». Может ли кто-нибудь предложить лучший локатор для поиска элемента?

<li class="ui-widget ui-menuitem ui-corner-all ui-menu-parent" aria- haspopup="true" role="menuitem">
   <a class="ui-menuitem-link ui-corner-all" href="javascript:void(0)">
      <span class="ui-menuitem-text">History</span>
      <span class="ui-icon ui-icon-triangle-1-e"></span>
   </a>

Ошибка

org.openqa.selenium.ElementNotVisibleException: элемент в настоящее время не виден, поэтому с ним нельзя взаимодействовать (ВНИМАНИЕ: сервер не предоставил никакой информации о трассировке стека). Продолжительность или время ожидания команды: 122 миллисекунды. Информация о сборке: версия: «2.52.0», ревизия. : '4c2593c', время: '2016-02-11 19:03:33'Информация о системе: хост: 'rsn-GA-78LMT-S2', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'amd64', os.version: '3.13.0-54-generic', java.version: '1.7.0_101'Идентификатор сеанса: 17716ecc-ffe3-40f9-92a6-8a106acf478dИнформация о драйвере: org.openqa.selenium Возможности .firefox.FirefoxDriver [{platform=LINUX, acceptSslCerts=true,javascriptEnabled=true, cssSelectorsEnabled=true, databaseEnabled=true, browserName=firefox, handlesAlerts=true, nativeEvents=false, webStorageEnabled=true, rotatable=false, locationContextEnabled=true , pplicationCacheEnabled = true, takeScreenshot = true, version = 38.0.1}] atun.reflect.NativeConstructorAccessorImpl.newInstance0 (собственный метод)

11.07.2016

  • Действия c_history1 = новые действия (объект); WebElement visbilityhc = obj.findElement(By.xpath(//span[contains(text(),'Visibility')])); WebElement vhistoryc = obj.findElement(By.xpath(//span[text() = 'История'])); WebElement vhcalls = obj.findElement(By.xpath(//span[(text() = 'Вызовы')])); c_history1.moveToElement(visbilityhc).moveToElement(vhistoryc).moveToElement(vhcalls).click().build().perform(); 11.07.2016
  • Если у вас есть дополнительные детали, которые вы хотите добавить после того, как вы изначально опубликовали свой вопрос (например, код выше), а не добавлять его в качестве комментария, отредактируйте свой вопрос и добавьте его туда, чтобы его можно было правильно отформатировать и упростить. найдут будущие читатели. 11.07.2016
  • Когда вы получаете исключение ElementNotVisibleException, это означает, что ваш элемент был найден, но не виден, поэтому с ним нельзя взаимодействовать. Selenium был разработан для взаимодействия с элементами только так, как это сделал бы пользователь, поэтому, поскольку пользователи не могут взаимодействовать с невидимыми элементами, Selenium тоже не сможет. Судя по вашему коду Actions, вам приходится наводить курсор несколько раз, а затем щелкать. Пробовали ли вы добавить точку останова и выполнить код, чтобы посмотреть, что произойдет? Это может помочь вам найти проблему. 11.07.2016

Ответы:


1

Если вы хотите получить элемент a с текстом History, попробуйте использовать linkText с ExpectedConditions.visibilityOfElementLocated, чтобы дождаться появления элемента, как показано ниже:

WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement linkElement= wait.until(ExpectedConditions.visibilityOfElementLocated(By.linkText("History")));

или если вы хотите получить элемент span с текстом History, попробуйте использовать xPath, как показано ниже: -

WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement spanElement = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//span[text() = 'History']")));

Отредактировано: – Если это element становится видимым при наведении указателя мыши на событие, попробуйте использовать Action для выполнения MouseOver, как показано ниже: –

WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement spanElement = wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//span[text() = 'History']")));
Actions builder = new Actions(driver);    
builder.moveToElement(spanElement).perform();  

or

builder.mouse.mouseMove(((Locatable)spanElement).coordinates)  

Надеюсь получится.. :)

11.07.2016
  • На самом деле это наведение курсора на элемент, видимость › История -- › вызовы, поэтому мне нужно использовать класс действий, так что вы можете предложить 11.07.2016
  • Actions c_history1 = new Actions(obj);WebElement visbilityhc = obj.findElement(By.xpath(//span[contains(text(),'Visibility')])); WebElement vhistoryc = obj.findElement(By.xpath(//span[text() = 'История'])); Ожидание WebDriverWait = новое Ожидание WebDriver(obj, 2); WebElement spanElement = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(//span[text() = 'Вызовы']))); //WebElement vhcalls = obj.findElement(By.xpath(//span[contains(text(),'Calls')])); c_history1.moveToElement(visbilityhc).moveToElement(vhistoryc).moveToElement(spanElement).click().build().perform(); 11.07.2016
  • Действия c_history1 = новые действия (объект); WebElement visbilityhc = obj.findElement(By.xpath(//span[contains(text(),'Visibility')])); WebElement vhistoryc = obj.findElement(By.xpath(//span[text() = 'История'])); WebElement vhcalls = obj.findElement(By.xpath(//span[(text() = 'Вызовы')])); c_history1.moveToElement(visbilityhc).moveToElement(vhistoryc).moveToElement(vhcalls).click().build().perform(); 11.07.2016
  • @KumarUppu, не могли бы вы поделиться URL-адресом своего веб-сайта, где вы хотите автоматизировать, поэтому я могу дать вам лучшее решение .. 11.07.2016
  • @KumarUppu ваш второй предоставленный код выглядит нормально ... есть какие-то проблемы ?? 11.07.2016
  • Новые материалы

    Основы принципов S.O.L.I.D, Javascript, Git и NoSQL
    каковы принципы S.O.L.I.D? Принципы SOLID призваны помочь разработчикам создавать надежные, удобные в сопровождении приложения. мы видим пять ключевых принципов. Принципы SOLID были разработаны..

    Как настроить Selenium в проекте Angular
    Угловой | Селен Как настроить Selenium в проекте Angular Держите свое приложение Angular и тесты Selenium в одной рабочей области и запускайте их с помощью Mocha. В этой статье мы..

    Аргументы прогрессивного улучшения почти всегда упускают суть
    В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

    Введение в Джанго Фреймворк
    Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..

    Настольный ПК как «одно кольцо, чтобы править всеми» домашних компьютеров
    Вид после 9 месяцев использования С настольных компьютеров все началось, но в какой-то момент они стали «серверами», и мы все перешли на ноутбуки. В прошлом году я столкнулся с идеей настольных..

    Расширенные методы безопасности для VueJS: реализация аутентификации без пароля
    Руководство, которое поможет вам создавать безопасные приложения в долгосрочной перспективе Безопасность приложений часто упускается из виду в процессе разработки, потому что основная..

    стройный-i18следующий
    Представляем стройную оболочку для i18next. Эта библиотека, основанная на i18next, заключает экземпляр i18next в хранилище svelte и отслеживает события i18next, такие как languageChanged,..