这是我要单击的按钮
<a class="paginate_button next" aria-controls="DataTables_Table_0" data-dt-idx="7" tabindex="0" id="DataTables_Table_0_next">Next</a>
直到它变成这个
<a class="paginate_button next disabled" aria-controls="DataTables_Table_0" data-dt-idx="7" tabindex="0" id="DataTables_Table_0_next">Next</a>
按钮的XPATH是
//*[@id="DataTables_Table_0_next"]
当前,我正在执行此操作,dataTables显示了第1页,共10页,第2页,共10页,依此类推,因此我制作了一个python函数,使其在10页中的10页时停止运行。这是html代码。
<div class="dataTables_info" id="DataTables_Table_0_info" role="status" aria-live="polite">Page 1 of 10</div>
然后将单击下一个选项卡。这是我的python代码。
entries = driver.find_element_by_class_name('dataTables_info').text
entries = entries.replace(',', '')
check = [int(s) for s in entries.split() if s.isnumeric()]
if check[0]!=check[1]:
driver.find_element_by_id('DataTables_Table_0_next').click()
,我的代码有效。但是事情在下一页上,它变成了DataTables_Table_1和DataTables_Table_1_next。
我尝试这样做
driver.find_element_by_class_name('paginate_button next').click()
但是它似乎没有用。只是一遍又一遍地停留在同一页面上。
有人能解决这个问题吗?一种使用类名而不是ID单击下一步按钮的方法,这样我就可以将其应用于每个表。
答案 0 :(得分:0)
您可以按以下方式获取“下一步”按钮的类。 然后,您可以通过在每次单击元素后检查按钮的类来使用while子句。 如果该类包含“禁用”,则只需休息一会儿即可。
xpath = "//a[contains(@class,'paginate_button next')]"
while(True):
# <- Put here the code snippet for getting the data for the page
cls = driver.find_element_by_xpath(xpath).get_attribute("class")
if 'disabled' not in cls:
driver.find_element_by_xpath(xpath).click()
else:
break