Что эквивалентно элементу Java elementToBeClickable в Selenium с использованием Ruby? - PullRequest
0 голосов
/ 18 октября 2018

Я новичок в сценариях Ruby для платформы автоматизации.Я экспериментирую с комбинацией Selenium и Ruby для инфраструктуры автоматизации.Я обнаружил, что в Ruby selenium нет elementToBeClickable?У меня есть скрипт, в котором я нажимаю на элемент, используя обычный метод щелчка.Однако этот щелчок не работает, элемент не нажимается.Поэтому я подумываю дождаться, когда элемент станет кликабельным, однако в библиотеке Ruby Selenium этот метод не похож на тот, что используется в Java и C #.Как вы, ребята, ждете, когда элемент будет активирован в Ruby?

  def click_more_actions_button
    more_actions_id = 'btnMoreActions'
    el = @wd.find_element(id: more_actions_id)
    el.click
  end

1 Ответ

0 голосов
/ 18 октября 2018
wait.until(ExpectedConditions.elementToBeClickable (By.id("foo")));

Нижние строки являются точным эквивалентом приведенного выше Java-кода,

wait.until { driver.find_element(id: "foo").enabled? }

Фактом является то, что метод elementToBeClickable в Java вводит в заблуждение, фактически он проверяет включенное состояние элемента.

См. Реализацию elementToBeClickable в ExpectedContions.java,

  /**
   * An expectation for checking an element is visible and enabled such that you can click it.
   *
   * @param locator used to find the element
   * @return the WebElement once it is located and clickable (visible and enabled)
   */
  public static ExpectedCondition<WebElement> elementToBeClickable(final By locator) {
    return new ExpectedCondition<WebElement>() {
      @Override
      public WebElement apply(WebDriver driver) {
        WebElement element = visibilityOfElementLocated(locator).apply(driver);
        try {
          if (element != null && element.isEnabled()) {
            return element;
          }
          return null;
        } catch (StaleElementReferenceException e) {
          return null;
        }
      }

      @Override
      public String toString() {
        return "element to be clickable: " + locator;
      }
    };
  }

. См. this в github.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...