在动态表格上使用while循环

时间:2019-06-25 06:30:46

标签: python selenium while-loop

我有一个动态表,从1到5一次显示5行。如果要查看第6行,则必须单击下一步。单击它后,该表将刷新5行并显示6至10行。

我正在尝试编写一个脚本,以查看表中的特定列。它会在该列的每一行中找到所有ID号。然后,它在同一目录中的txt文件中查找。如果ID号/数字与txt文件中的数字匹配,将单击一个与ID号相对应的复选框。

由于网站设计的原因,我必须创建一个循环,其中说:“如果该页面上有ID号,请勾选它。如果没有,请单击下一步按钮并检查下一页,依此类推。 。”

i = 1
while i < 6:
    ID = browser.find_element_by_xpath(before_xpath + str(i) + after_xpath).get_attribute('innerHTML')

    if ID in open('ID_NUMBERS.txt').read():
        tick = browser.find_element_by_xpath(before_tick + str(i) + after_tick)
        tick.click()
        i += 1
        break
    if ID not in open('ID_NUMBERS.txt').read():
        next_page = browser.find_element_by_xpath(skip_page)
        next_page.click()
        time.sleep(20)
        i += 1
        continue

我已经运行了几次。实际上,我得到了最初获得的结果,但是由于某种原因,它现在无法正常工作。目前,它单击了下一个按钮5次,然后再转到代码的下一部分。当应该选择复选框时,它会跳过txt文件中的ID号。

1 个答案:

答案 0 :(得分:0)

我已经解决了问题。我现在遇到的唯一问题是代码的执行速度非常慢(在代码中使用time.sleep(#)的情况下。我现在试图弄清楚如何删除它们并改用webdriverwait。 / p>

i = 1

while i < 6:
    time.sleep(4)
    refID = browser.find_element_by_xpath(before_xpath + str(i) + after_xpath).get_attribute('innerHTML')
    if str(refID) in open('ID NUMBERS.txt').read():
        tick = browser.find_element_by_xpath(before_tick + str(i) + after_tick)
        tick.click()
        break
    time.sleep(4)
    i += 1
    time.sleep(4)

    if i == 5:
        refID = browser.find_element_by_xpath(before_xpath + str(i) + after_xpath).get_attribute('innerHTML')
        time.sleep(4)
        if str(refID) in open('ID NUMBERS.txt').read():
            tick = browser.find_element_by_xpath(before_tick + str(i) + after_tick)
            tick.click()
            break
        time.sleep(4)
        i = 1
        next_page = browser.find_element_by_xpath(skip_page)
        next_page.click()
        time.sleep(4)