我正在寻找一种方法来停止循环,继续单击“下一页”按钮,直到它不再可以在基于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">
答案 0 :(得分:1)
您可以尝试检查'onclick'
属性,其字符串是否以return false;
开头,如果是,您应该在此时结束循环。为此,将while循环条件更改为 -
while not driver.find_element_by_class_name('rgPageNext').get_attribute('onclick').startswith("return false;"):