如何至少执行一次循环操作以及条件为真时

时间:2016-09-02 21:38:45

标签: python for-loop while-loop pagination do-while

我正在寻找其他语言中do while循环的Python逻辑等价物。我有迭代的页面结果。结果结构:

1, 2, 3, 4 , ... NEXT

每个元素都有一个链接。只有最后一页没有NEXT元素,因此我将NEXT标识为迭代时需要检查的条件。

我已使用以下方法识别出来:

next_link = driver.find_element_by_id('anch_25')

所以我有一个函数my_function(),我希望在next_link存在的每个页面上运行,然后使用click()函数单击next_link。如果元素不存在,则表示只有1个页面结果或者我在结果的最后一页。无论哪种方式,我仍然希望my_function能够在任何一种情况下运行。

所以我有:

def my_function():
    print "Another result page"

###This is where I am trying to loop through the results pages

next_link = driver.find_element_by_id('anch_25')

if next_link:
    my_function()
    next_link.click()
else:
    my_function()

不幸的是,这只适用于第一页而不会遍历其他页面。

我也试过这个,

while next_link:
    my_function()
    next_link.click()
my_function()

它似乎也不起作用。有什么建议吗?

2 个答案:

答案 0 :(得分:1)

在调用您的函数后检查下一个链接。然后使用break突破循环,而不是使用next_link作为while条件。

while True:
    my_function()
    next_link = driver.find_element_by_id('anch_25')
    if not next_link:
        break
    next_link.click()

答案 1 :(得分:1)

默认情况下,您可以使用while循环设置为True的变量,并根据您的条件将其更改为True/False。例如:

is_continue = True

while is_continue:
    ... # Your Logic

    if my_condition:
        is_continue = True
    else:
        is_continue = False

PS:我给你的示例示例,剩下的部分给你实现。因此,您可以通过自己的知识实现它,并了解事情是如何运作的。