Python中的Selenium:在Onclick属性更改后打破while循环

时间:2015-07-27 14:53:15

标签: python selenium

我正在寻找一种方法来停止循环,继续单击“下一页”按钮,直到它不再可以在基于Web的系统上单击,这只能通过更改Onclick值来表示:

onclick="javascript:__doPostBack('m$main$RadGrid1$ctl00$ctl03$ctl02$ctl20','')"

onclick="return false;__doPostBack('m$main$RadGrid1$ctl00$ctl03$ctl02$ctl20','')"

我的问题是我目前没有办法让Selenium认识到已经做出了这一改变。

截至目前,我已经能够写出这样的内容:

while (driver.find_element_by_class_name('rgPageNext').is_enabled()) is True:
    time.sleep(1)
    elem = driver.find_element_by_class_name('rgPageNext').click()

但是,即使按钮在到达最后一页后没有执行任何操作,该按钮也始终处于启用状态,这导致Selenium不断尝试单击该按钮。

检查按钮元素的完整信息如下:

<input type="button" name="m$main$RadGrid1$ctl00$ctl03$ctl02$ctl20" value=" " onclick="javascript:__doPostBack('m$main$RadGrid1$ctl00$ctl03$ctl02$ctl20','')" title="Next Page" class="rgPageNext">

<input type="button" name="m$main$RadGrid1$ctl00$ctl03$ctl02$ctl20" value=" " onclick="return false;__doPostBack('m$main$RadGrid1$ctl00$ctl03$ctl02$ctl20','')" title="Next Page" class="rgPageNext">

1 个答案:

答案 0 :(得分:1)

您可以尝试检查'onclick'属性,其字符串是否以return false;开头,如果是,您应该在此时结束循环。为此,将while循环条件更改为 -

while not driver.find_element_by_class_name('rgPageNext').get_attribute('onclick').startsw‌​ith("return false;"):