无法使用 Selenium Webdriver select 所有复选框

Unable to select all checkboxes using Selenium Webdriver

我要select所有项目。每页应该有 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" and @data-action="selectall"]' 作为 xpath。 print(element.is_selected()) 显示复选框已 selected。

checkbox源码如下:

<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 个,但复选框未 selected。如果页面上的所有项目都已成功 selected,我可以在下载后取消 select 它们,因为我将转到下一页并继续下载所有页面。

[更新]:我点击下载按钮可以下载50个项目。但是,那 50 个项目并不是页面上列出的那 50 个项目。

在点击 Checkall 框之前:

点击后:

我可以下载 selected 的项目。但是,它们与列出的不同:

如果成功的话应该是这样的:

问题与会计设置有关。默认情况下,每页仅显示 10 个项目。我有一个帐户并将我的默认设置更改为每页 50 个项目。当我使用我的帐户登录时,我遇到了这个问题。如果我不这样做并使用默认的每页 10 个项目,则没有问题。

您可以执行 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;  '
                      '   }  '
                      '}')