解决以下问题的最快方法是什么?

时间:2018-10-17 13:58:21

标签: python-3.x performance selenium-chromedriver execution

我编写了一个屏幕抓取程序,该程序监视时钟(在应用程序服务器上)并在7:00:00破折号处在线进行预订。工作正常。但是,我花了一些时间尝试改善其性能。我正在使用硒和chrome驱动程序。

这是我所学到的。我尝试了各种方法来查找(通过link_text,by_xpath等)并单击有问题的元素(如下所示)。当我没有点击就找到元素时,查找过程大约需要0.02秒。当我单击一下找到它(我需要选择元素并移至下一页)时,它花费了一秒钟。无论我使用哪种find_element_by变体,我都会得到这些相同的结果,并且在无头或普通模式下,我得到相同的时间。

这是我的理论-在已经加载到我的机器中的html中查找元素相对简单。但是,当我单击该元素时,处理将转到服务器,服务器将执行一些操作,并且显示新的iframe,所有这些都需要时间。因此,我得出的结论是,也许我不能花大量的时间(实际上,没有单击选项的同一条语句花费了2%的时间),但我希望也许有人对此有所想法。我以为也许我可以在本地跳到第二个ifame,但是看不到做到这一点的方法。我还考虑了硒以外的其他方法,但是由于我认为问题出在服务器端,因此不确定是否值得。

提前感谢任何想法。

程序很大,但这是相关部分:

从NAP返回-确实关闭至7:00 AM,选择所需的日期,然后使用准备好的xpath转到下一页(真的为iframe)

    try: 
        br.find_element_by_link_text(str(day_to_book)).click()
        #sleep(refresh_factor)
    except NoSuchElementException:
         self.queue.put("- (" + thread + ") Attempted date selection too early? " + str(datetime.datetime.now()\
                    + datetime.timedelta(seconds = second_difference))[-11:-4])

这是元素'class =“#”> 31:'的html

“ 31 31“

0 个答案:

没有答案