在动态选项卡上使用while循环

2024-09-28 22:19:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个动态表,从1到5一次显示5行。如果你想看第6行,你必须点击下一个按钮。单击它之后,表格将刷新5行并显示第6到10行。你知道吗

我正在尝试编写一个脚本来查看表中的特定列。它在该列的每一行中查找所有的ID号。然后在同一目录下的txt文件中查找。如果ID编号与txt文件中的编号匹配,则会单击与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

我已经试过几次了。我实际上得到了我最初想要的结果,但由于某些原因,它现在不起作用。现在,它在进入代码的下一部分之前单击next按钮5次。当它应该选择勾选框时,它将跳过txt文件中的ID号。你知道吗


Tags: 文件browsertxtidbypageelementfind
1条回答
网友
1楼 · 发布于 2024-09-28 22:19:20

我已经解决了这个问题。我现在遇到的唯一问题是代码的实现非常慢(在时间。睡眠(#)在代码中。我现在正试图找出如何删除这些,并使用webdriverwait代替。你知道吗

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)

相关问题 更多 >