在python中使用Selenium线程重定向时跟踪url

2024-05-16 03:35:55 发布

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

我有一个url,它有一个重定向链,最多3个,也就是说,它指向另一个url,然后再指向另一个,直到它发生三次。在

我想在最后一页开始加载后立即关闭浏览器。我知道当域更改为某个特定的url时,我的url已经到达。我试图通过使用driver.current_url线程化来实现这一点。在

我将线程类实现为:

class driverThread (threading.Thread):
    def __init__(self, threadID, driver):
        threading.Thread.__init__(self)
        self.threadID = threadID
        self.driver = driver;
    def run(self):
        print "Initiated thread: " + str(self.threadID);
        while True:

            #Here is the problem
            lk=str(self.driver.current_url);


            try:
                if lk.find('myhostname.com',lk.index('://')+2,lk.index('/',lk.index('://')+4))>=0:
                    sleep(1);
                else:
                    #quits the driver once the link has successfully redirected to destination url
                    print "VISITED";
                    self.driver.quit();
                    break;
            except ValueError:
                sleep(1);
                pass;

呼叫相同于:

^{pr2}$

问题出在lk=str(self.driver.current_url)行。当我运行这个脚本时,我遇到了一个声明CannotSendRequest的错误,我知道这是由于http lib的问题造成的。根据我的说法,这是因为我的线程一直在检查driver.current_url,当调用driver.get(link)时,它会更新。get函数一被调用,线程就会出现错误CannotSendRequest,这主要是因为它现在正在获取链接。在


Tags: theselfurlindexinitdefdrivercurrent