Невозможно установить все флажки с помощью Selenium Webdriver - PullRequest
0 голосов
/ 08 января 2020

Я хочу выбрать все предметы. На каждой странице должно быть 50 пунктов. Я использую следующий код:

wait = WebDriverWait(browser, 10)

element = wait.until(EC.element_to_be_clickable((By.XPATH, '//*[@id="results-list-delivery- 
          toolbar"]/div/ul[1]/li[4]/ul/li[3]/button')))
browser.execute_script("arguments[0].click();", element)

Я также пробовал '// input [@ type = "checkbox" и @ data-action = "selectall"]' в качестве xpath. print (element.is_selected ()) показывает, что флажок установлен.

Исходный код флажка следующий:

<li class="hideInMobile has_tooltip checkbox" data-menu="viewtray">
    <span class="hidden">Click to add or remove all documents on the current page to the cart.</span>
    <input type="checkbox" data-action="selectall" aria-label="Select all items on this page">
    <span class="tooltip" role="tooltip">Select all items on this page</span>
</li>

Спасибо!

Показывает 50 ВЫБРАН, но флажок не установлен. И если все элементы на странице успешно выбраны, я могу отменить их выбор после загрузки, так как я собираюсь перейти на следующую страницу и продолжить загрузку для всех страниц. enter image description here

[Обновить]: я могу загрузить 50 элементов, нажав кнопку загрузки. Тем не менее, эти 50 пунктов не те, которые перечислены на странице.

До того, как будет нажата кнопка Checkall:

enter image description here После того, как она нажата: enter image description here

Я могу скачать выбранные элементы. Тем не менее, они отличаются от перечисленных: enter image description here

В случае успеха, должно быть так: enter image description here

Ответы [ 2 ]

1 голос
/ 14 января 2020

Вы можете выполнить javascript, чтобы установить все флажки.

driver = webdriver.Firefox()
driver.execute_script('var checkboxes = document.getElementsByTagName("input");'
                      'for(var i = 0; i < checkboxes.length; i++) {'
                      '  if(checkboxes[i].type == "checkbox") {'
                      '      checkboxes[i].checked = true;  '
                      '   }  '
                      '}')
0 голосов
/ 14 января 2020

Проблема связана с настройкой учета. По умолчанию на каждой странице отображается только 10 элементов. У меня есть аккаунт, и я изменил настройки по умолчанию на 50 элементов на странице. Когда я вошел в систему с моей учетной записью, у меня есть эта проблема. Если я этого не сделаю и использую по умолчанию 10 элементов на странице, это не проблема.

...