2016-07-11 8 views
0

Ich muss wissen, ob ich ein Proxy/Profil für jeden Treiber behandeln kann. Ich habe den folgenden Code:Derselbe Webdriver, mehrere Instanzen, jede mit einem eigenen Profil

def browser(url, id, user1, parolauser1, user2, parolauser2): 
    print multiprocessing.current_process() 
    fp = webdriver.FirefoxProfile("C:\Users\yt\AppData\Roaming\Mozilla\Firefox\Profiles\hgv9qvsn.default") 
    driver = webdriver.Firefox(fp) 
    driver.get(url) 
    for handle in driver.window_handles: 
     if "whateveriwant" in driver.title and id == 0: 
      ... 
      for catevreaueu in range(0,7000): 
       test_to_see_how_many_lines_are_in_a_file = function_test_to_see_how_many_lines_are_in_a_file_for_this_first_handle() 
       print test_to_see_how_many_lines_are_in_a_file 
       if test_to_see_how_many_lines_are_in_a_file < 3: 
        another_function_for_continuing_on_this_first_handle(driver) 
       else: 
        driver.close() 
        break 
     if "whateveriwant" in driver.title and id == 1: 
      ... 
      for catevreaueu in range(0,7000): 
       test_to_see_how_many_lines_are_in_a_file = function_test_to_see_how_many_lines_are_in_a_file_for_this_s_handle() 
       print test_to_see_how_many_lines_are_in_a_file 
       if test_to_see_how_many_lines_are_in_a_file < 3: 
        another_function_for_continuing_on_this_second_handle(driver) 
       else: 
        driver.close() 
        break 
    return 
if __name__ == '__main__': 
    jobs = [] 
    user_one = "userone" 
    parola_user_one = "passwordforuserone" 
    user_two = "usertwo" 
    parola_user_two = "passwordforuser2" 
    pages = ["http://www.didi.com", "http://www.didi.com/"] 
    id = 0 
    for page in pages: 
     p = multiprocessing.Process(target=browser, args=(page, id, user_one, parola_user_one, user_two, parola_user_two)) 
     id+=1 
     jobs.append(p) 
     p.start() 

Jetzt beginnt es zwei WebDriver Instanzen, aber wie Sie beide benutzen das gleiche Profil sehen kann.

Antwort

0

Während es manchmal funktioniert, würde ich nicht empfehlen, wenn Sie das gleiche Profil benötigen, erstellen Sie mehrere Kopien davon. Wenn Sie sich die underlying code ansehen, sehen Sie, dass das Erstellen einer Instanz von webdriver einige Dinge im Profil verändert. driver.quit auch löscht das Profil vollständig.

+0

Es funktioniert, aber ich weiß nicht, wie kann ich Proxies für jede – user215379

+0

Wie gesagt, es kann manchmal funktionieren, aber es ist nicht so stabil. Ein Proxy ist eines dieser Beispiele - weil Firefox dies in den Profildateien festlegt und diese gemeinsam nutzen. –