无法使用Selenium Webdriver选择所有复选框
我想选择所有项目。每页应该有50个项目。我使用以下代码:无法使用Selenium Webdriver选择所有复选框,selenium,selenium-webdriver,selenium-chromedriver,google-chrome-devtools,Selenium,Selenium Webdriver,Selenium Chromedriver,Google Chrome Devtools,我想选择所有项目。每页应该有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].
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。打印(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个已选中,但复选框未选中。如果成功选择了页面上的所有项目,我可以在下载后取消选择它们,因为我将移动到下一页并继续下载所有页面
[更新]:我可以通过单击下载按钮下载50个项目。但是,这50项不是页面上列出的50项
单击复选框之前:
单击后:
我可以下载选定的项目。但是,它们与列出的不同:
如果成功,应该是这样的:
问题与会计设置有关。默认情况下,每页上仅显示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; '
' } '
'}')
driver=webdriver.Firefox()
driver.execute_脚本('var checkbox=document.getElementsByTagName(“输入”);'
'对于(var i=0;i
您的元素
没有指向复选框输入
元素。它指向按钮。如果更新指向输入的xpath复选框后无法解析,请提供li
元素代码。问题中已更新您是否尝试使用这些选中的复选框进行操作(删除条目,将其标记为未读)?根据我的经验,有时复选框似乎未被选中,但操作正在对其进行操作。打开“开发人员工具”并选择“元素”选项卡,关注复选框元素,并确认其在网页上可见。并检查元素是否在框架中。@victor,您是否尝试过webdriver click()方法?Javascript executor在后台执行脚本以执行操作,这些操作在UI中不可见,如果失败,不会引发异常。