如何在selenium python中为导出不同网页中的所有数据设置公共定时睡眠

ibrsph3r  于 2023-01-24  发布在  Python
关注(0)|答案(2)|浏览(83)

我在多个网页中做UI自动化,在单个脚本中处理所有网页,我的问题是在一个网页中有100个数据,导出它将需要10秒,在另一个网页中包含500个数据,将需要50秒导出。
``

def Export():
global status,driver,wait
#driver.implicitly_wait(300)
try:
    driver.find_element(By.XPATH, "//button[contains(@name,'confirm')]").click()
    print("Export Button Clicked")
    time.sleep(50)
except:
    status="fail"
    print("Export Button Not Displayed")

导出():
``
我希望为所有网页设置公共时间睡眠以导出数据
怎么处理呢?

wwwo4jvm

wwwo4jvm1#

为整个脚本设置超时,并根据导出数据所需的最长时间进行调整

import time

timeout = 60 # seconds

def export():
    try:
        driver.find_element(By.XPATH, "//button[contains(@name,'confirm')]").click()
        print("Export Button Clicked")
        
        time.sleep(timeout)
    except:
        status="fail"
        print("Export Button Not Displayed")
export()

也可以使用显式等待函数

def export():
    try:
        driver.find_element(By.XPATH, "//button[contains(@name,'confirm')]").click()
        print("Export Button Clicked")
        
        # Wait for export to finish before proceeding
        export_complete = EC.presence_of_element_located((By.XPATH, "//export-complete"))
        WebDriverWait(driver, 60).until(export_complete)
    except:
        status="fail"
        print("Export Button Not Displayed")

export()
    • 更新**
  • 超时和显式等待的组合 *
timeout = 60 # seconds

def export():
    try:
        driver.find_element(By.XPATH, "//button[contains(@name,'confirm')]").click()
        print("Export Button Clicked")
        
        # Wait for export to finish or timeout
        export_complete = EC.presence_of_element_located((By.XPATH, "//export-complete"))
        WebDriverWait(driver, timeout).until(export_complete)
    except:
        status="fail"
        print("Export Button Not Displayed")

export()
7eumitmz

7eumitmz2#

1.你不应该使用硬编码停顿。
您需要得到指示数据被导出。它可以根据网页上的一些预期的变化或文件被下载并存在于磁盘等。
1.如果没有办法避免这种情况,你只能使用硬编码的暂停,你可以设置某种字典的延迟值每个网站,所以你将能够得到延迟值(值)每个链接(键).

相关问题