有没有一种方法可以使硒单击下一个按钮,直到使用类名代替ID使其不可单击为止

时间:2019-09-07 18:10:28

标签: python html selenium

这是我要单击的按钮

<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单击下一步按钮的方法,这样我就可以将其应用于每个表。

1 个答案:

答案 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



相关问题