В Selenium чем отличаются методы sendKeys () и setValue ()? - PullRequest
0 голосов
/ 27 февраля 2019

Я использовал

WebElement.sendKeys('') 

и

WebElement.setValue('')

для ввода текста в поля.В подавляющем большинстве случаев они, похоже, действуют одинаково, но я обнаружил несколько случаев, когда setValue() работает, а sendKeys() нет.

Все, что я могу найти в документации по Selenium, это то, что sendKeys() «более точно имитирует пользовательский ввод» , чем setValue().Кто-нибудь знает, что на самом деле происходит под капотом?

1 Ответ

0 голосов
/ 27 февраля 2019

sendKeys ()

sendKeys() - это Java метод из WebElement для имитации ввода в элемент, который может установить егозначение.

  • Определение:

    void sendKeys(java.lang.CharSequence... keysToSend)
        Use this method to simulate typing into an element, which may set its value.
    
    Parameters:
        keysToSend - character sequence to send to the element
    
    Throws:
        java.lang.IllegalArgumentException - if keysToSend is null
    
  • Использование:

    driver.findElement(By.id("identifierId")).sendKeys("C.Peck@stackoverflow.com");
    

Однако естьне является setValue() методом в Java , и наиболее близким совпадением является setAttribute() JavaScript метод.


setAttribute ()

setAttribute() - это метод JavaScript , который устанавливает значение атрибута для указанного элемента.Если атрибут уже существует, значение обновляется;в противном случае добавляется новый атрибут с указанным именем и значением.

  • Синтаксис:

    Element.setAttribute(name, value);
    
  • Пример:

    • HTML:

      <button>Hello World</button>
      
    • JavaScript:

      var b = document.querySelector("button"); 
      b.setAttribute("name", "helloButton");
      b.setAttribute("disabled", "");
      
  • Реализация через Java executeScript():

    ((JavascriptExecutor)driver).executeScript("document.getElementById('elementID').setAttribute('attribute_name', 'new_value_for_element')");
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...