lundi 19 juillet 2021

why python if while ends in a dead loop

order = 2
selected = 0
while selected < 21:
    current_tr = driver.find_element_by_xpath('/ html / body / table / tbody / tr / td / div / div[3] / table / tbody / tr[%d]' % order) # form line 1. below the table's header
    if current_tr.get_attribute("bgcolor") is None: # no bgcolor means not yet reviewed
        driver.find_element_by_xpath("//td[2]/div/a").click() # check the onclick content
        div_content = driver.find_element_by_xpath("//td[2]/div/div").text # fetch onclick content
        driver.find_element_by_xpath("//td[2]/div/div/a").click()  # close the onclick content
        print(div_content)
        if "car" in div_content: #judge if certain string exists in onclick content
            list_content = div_content.split("【car】")
            car_close = list_content[1].strip() # fetch the content
            list_car = car_close.split(" ")
            car = list_doi[0]
            print(car)
            orderminus = order - 1
            driver.find_element_by_xpath('// *[ @ id = "%d"] / td[6] / a' % orderminus).click()  # pick this row,
            time.sleep(1)
            selected = selected + 1
            order = order + 0  #if this row is picked, the row will disappear, so the order won't change
        else:
            order = order + 1 # if "car" is not in
            time.sleep(1)
     else: # if already reviewed, order + 1
         order = order + 1

above is my code using selenium to navigate the webpage with a table. First judgement: if the current row is reviewed, not yet reviewed? ok, print the info; already reviewed?skip it.

then plus judgement: if there certain string "car" in the info: no? skip; yes, click it, the row disappear;

But currently when I am running this, the actual status is : when doing the plus judement, if the string "car" is not in the info, it keeps printing the info, it seems it not doing the else branch, is doing the line 6_9 in this snippet, always, dead end loop.

Why? anybody give me a clue?

Aucun commentaire:

Enregistrer un commentaire