以下是我的代码:

from selenium import webdriver
import time
browser = webdriver.Edge()

st1 = time.time()
browser.get("http://app1.helwan.edu.eg/Commerce/HasasnUpMlist.asp")
et1 = time.time()
el1 = et1-st1
print(f"Elapsed Time is: {el1} Seconds")
# 10.48

st2 = time.time()
my_id = browser.find_element("name","x_st_settingno")
submitting = browser.find_element("name","Submit")
my_id.send_keys(18760)
submitting.click()
et2 = time.time()
el2 = et2-st2

link_to_natega = browser.find_element("xpath",'//*[@id="ewlistmain"]/tbody/tr[3]/td[9]/font/b/span/a')
link_to_natega.click()

这个很好用.问题是el1.我试着让它成为一个函数,用browser.refresh()if el1>=10刷新

但事实证明,正如我可能从文章中理解的那样,el1是在代码完成后计算的.我想让它实时测量加载时间,并不断更新数字,以便我可以跟踪,然后刷新页面,如果条件得到满足.

要清楚地说明问题:

  1. 该程序将try 访问"http://app1.helwan.edu.eg/Commerce/HasasnUpMlist.asp"
  2. 如果超过10秒,请刷新(),否则继续执行代码
  3. 如果el2也大于10,则返回原始url"http://app1.helwan.edu.eg/Commerce/HasasnUpMlist.asp"并重新执行代码.

推荐答案

要将page load time限制为102,您可以使用set_page_load_timeout()方法,如下所示:

from selenium import webdriver
from selenium.common.exceptions import TimeoutException

browser = webdriver.Chrome(executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe')
browser.set_page_load_timeout(10)
while True:
    try :
        browser.get("http://app1.helwan.edu.eg/Commerce/HasasnUpMlist.asp")
        print("URL successfully Accessed")
        # continue with the next steps
    except TimeoutException as e:
        print("Page load Timeout Occurred. Refreshing !!!")
        browser.refresh()

Python-3.x相关问答推荐

Python GUI:tkinter应用程序作为Windows的实时桌面

如何使用正则表达式通过反向搜索从链接中获取特定文本

在python内的powershell中转义$_

如何根据索引子列表对元素列表进行分组或批处理?

合并所有文件并获取特定列数据

移动所有列的数据帧值以使其单调递增

txt 文件与不同的分隔符到整数列表

Python多进程:运行一个类的多个实例,将所有子进程保留在内存中

如何在带有 GUI 的 python 游戏中设置回答时间限制?

如何在 django 中没有循环的情况下获得前键的前键?

在python中循环处理时并行写入文件

使用带有多线程的 win32com

Generic[T] 基类 - 如何从实例中获取 T 的类型?

Python 3.9.8 使用 Black 并导入 `typed_ast.ast3` 失败

判断 dict.items() 中的成员资格的时间复杂度是多少?

如何在 python 3.x 中禁用 ssl 判断?

向 Python 函数添加属性的最佳方法

我可以替换 Python 中对象的现有方法吗?

异常被忽略是什么类型的消息?

什么是ANSI_X3.4-1968编码?