打开新标签页时如何为浏览器计时

时间:2018-07-03 22:06:58

标签: python python-3.x tabs selenium-chromedriver wait

当需要单击在新选项卡中打开的项目时,我具有以下代码,并且需要将浏览器切换到该选项卡。

def ThingsinTab(browser):

   clickbutton=Somefunction #Find where to click

   clickbutton.click()

   try:  

      WebDriverWait(browser,10).until(
      EC.number_of_windows_to_be(len(old_tabs)+1))
   except: return browser

   THIS POINT!!

   new_window=(set(browser.window_handles)-old_tabs).pop()
   browser.switch_to.window(new_window)

   #Do some stuff with this tab

   browser.close()  
   browser.switch_to_window(main_tab)

   return browser

有时该选项卡会打开,但它会一直显示为灰色背景,很长时间没有完全加载。现在,我缩小了代码停留的位置,并在上面的代码中发出了信号。 我想要的是一种对新变量new_window和开关进行计时的方法,这样,如果说,在10秒钟后代码中没有继续前进,它将停止,关闭新标签并返回浏览器

提供的此功能是较大代码的一部分,我也想知道如何在较大的脚本中计时该功能,因此,如果花费的时间超过数秒,则会中断该函数的运行并恢复其余的代码。

Big script

some things

ThingsinTab() #I want to set a maximum time for this function to complete its code,or else stop it and move on.

More some things

1 个答案:

答案 0 :(得分:0)

您可以剥离一个线程来打开窗口,然后等待最多10秒钟。如果尚未完成,请终止线程并执行替代策略。

您可能会发现threading模块很有用。 thread.join(10)可以执行“最长等待10秒”部分;除了使线程正常工作的困难之外, 也不难。