Python selenium while 循环尽管满足条件

时间:2021-02-25 19:29:46

标签: python-3.x selenium

我创建了一个 while 循环,它看起来应该是 chrome 页面的标题,如果它们都包含字符串 404,则页面刷新并且循环再次开始。如果任何页面不包含字符串 404,则 while 循环条件为假,我的代码将继续。 但是,当我知道条件为真并且所有网页标题都包含字符串 404 时,正在传递 while 循环

# Open first window and Maximize Window
driver.get(web_link_00)
driver.maximize_window()
web_title_00 = driver.title
print('First Window: ' + web_title_00)
# Open a new window, Switch to the new window
driver.execute_script("window.open('');")
driver.switch_to.window(driver.window_handles[1])
driver.get(web_link_15)
web_title_15 = driver.title
print('Second Window: ' + web_title_15)
# Open a new window, Switch to the new window
driver.execute_script("window.open('');")
driver.switch_to.window(driver.window_handles[2])
driver.get(web_link_20)
web_title_20 = driver.title
print('Third Window: ' + web_title_20)

# Checking if listing is live with While Loop
while '404' in (web_title_00, web_title_15, web_title_20):
    print("listing Not Live Yet")
    driver.switch_to.window(driver.window_handles[0])
    driver.refresh()
    driver.switch_to.window(driver.window_handles[1])
    driver.refresh()
    driver.switch_to.window(driver.window_handles[2])
    driver.refresh()

注意: 当我更改 while 循环以检查一个条件时,它会正确执行下面的示例 但是现在它只是检查一个条件而不是 3

# Checking if listing is live with While Loop
# Before: while '404' in (web_title_00, web_title_15, web_title_20):
while '404' in web_title_00:
    print("listing Not Live Yet")
    driver.switch_to.window(driver.window_handles[0])
    driver.refresh()
    driver.switch_to.window(driver.window_handles[1])
    driver.refresh()
    driver.switch_to.window(driver.window_handles[2])
    driver.refresh()

1 个答案:

答案 0 :(得分:0)

此条件 if '404' in (.., .., ..): 用于完全匹配,例如

a = "good title"
b = "404" # change to "bad 404" and it will not work

if '404' in (a,b):
  print('error found")

匹配包含需要循环一一检查,或者使用any()进行列表推导

while any('404' in t for t in [web_title_00, web_title_15, web_title_20]):
    print("listing Not Live Yet")