Как щелкнуть внутри текстового поля без уникального идентификатора в соответствии с HTML через selenium-webdriver и Python - PullRequest
0 голосов
/ 07 сентября 2018

<div class="panel">
      <div data-bind="foreach: UriParameters">
        <div>
          <input readonly="true" spellcheck="false" tabindex="100" class="uriParameterLabel" data-bind="value: '{' + name + '}'">
          <span>= </span>
          <input spellcheck="false" data-bind="value: value, valueUpdate: 'afterkeydown', enable: enabled">
          <input type="checkbox" data-bind="checked: enabled">
        </div>
      
        <div>
          <input readonly="true" spellcheck="false" tabindex="100" class="uriParameterLabel" data-bind="value: '{' + name + '}'">
          <span>= </span>
          <input spellcheck="false" data-bind="value: value, valueUpdate: 'afterkeydown', enable: enabled">
          <input type="checkbox" data-bind="checked: enabled">
        </div>
      </div>
    </div>

Я учусь автоматизировать тестирование API и наткнулся на элемент, который не имеет уникального идентификатора, поскольку он автоматически получает свое значение от конечной точки.

1 Ответ

0 голосов
/ 07 сентября 2018

В соответствии с HTML , которым вы поделились, чтобы найти текстовое поле , соответствующее полю {userid}, вам нужно заставить WebDriverWait для элемента быть кликабельным , и вы можете использовать следующее решение:

  • XPATH:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='panel']/div[contains(@data-bind, 'UriParameters')]/div//following::input[2]"))).click()
    #or
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='panel']/div[contains(@data-bind, 'UriParameters')]/div//following::input[2]"))).send_keys("Ice")
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...