Как выбрать окно поиска работы в селене? - PullRequest
0 голосов
/ 27 апреля 2019

Раньше я использовал селен, но это окно поиска создает трудности для выбора.

<div class="jobs-search-box__input jobs-search-box__input--keyword">
  <button class="jobs-search-box__input-icon" type="button" data-ember-action="" data-ember-action-489="489">
    <li-icon type="search-icon" role="img" aria-label="Search"><svg viewBox="0 0 24 24" width="24px" height="24px" x="0" y="0" preserveAspectRatio="xMinYMin meet" class="artdeco-icon" focusable="false"><path d="M21,19.67l-5.44-5.44a7,7,0,1,0-1.33,1.33L19.67,21ZM10,15.13A5.13,5.13,0,1,1,15.13,10,5.13,5.13,0,0,1,10,15.13Z" class="large-icon" style="fill: currentColor"></path></svg></li-icon>
  </button>

<artdeco-typeahead-deprecated id="ember490" class="ember-view"><artdeco-typeahead-deprecated-input id="ember491" class="ember-view">  <input class="artdeco-typeahead-deprecated-input__ghost-text" placeholder="" aria-label="Search jobs" aria-hidden="true" disabled="" type="text">

<input role="combobox" autocomplete="off" spellcheck="false" aria-autocomplete="list" aria-invalid="false" aria-expanded="false" aria-label="Search jobs" id="jobs-search-box-keyword-id-ember488" placeholder="Search jobs" type="text">
</artdeco-typeahead-deprecated-input>
<!----><!----></artdeco-typeahead-deprecated></div>

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

Ответы [ 2 ]

2 голосов
/ 27 апреля 2019

Я бы рассмотрел следующий селектор CSS.Вам может даже не понадобиться input и просто использовать [placeholder="Search jobs"]:

input[placeholder="Search jobs"]

с ожиданием

WebDriverWait(driver,10).until(EC.presence_of_element_located((By.CSS_SELECTOR,'input[placeholder="Search jobs"]')))
0 голосов
/ 27 апреля 2019

Требуемый элемент - это элемент с поддержкой Ember.js , поэтому для нахождения элемента вам нужно вызвать WebDriverWait , чтобы элемент был кликабельным , и вы можете используйте одну из следующих стратегий локатора :

  • Использование CSS_SELECTOR:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[id^='jobs-search-box-keyword-id-'][placeholder='Search jobs']"))).send_keys("Greg Black")
    
  • Использование XPATH:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[starts-with(@id, 'jobs-search-box-keyword-id-') and @placeholder='Search jobs']"))).send_keys("Greg Black")
    
...