2017-10-03 1 views
1

Lorsque tuant un conducteur à l'une des solutions suivantes empruntées à this SO question:PhantomJS et python: Kill pilote actuel ouvre une nouvelle une erreur

driver.close() 

ou:

driver.quit() 

ou les deux en même temps:

driver.close() 
driver.quit() 

ou ceci:

import signal 

driver.service.process.send_signal(signal.SIGTERM) # kill the specific phantomjs child proc 
driver.quit() 

Il fonctionne et la fenêtre est fermée, j'ai vérifié les processus et rien ne semblait être laissé derrière,

"phantomjs" in (p.name() for p in psutil.process_iter()) 

retourne faux, nous espérons que c'est assez fiable pour connaître les processus sont morts. Mes yeux l'ont également vérifié via le gestionnaire de tâches (en utilisant win 10). Le problème que je rencontre est lorsque j'essaie d'instancier un nouveau pilote. Je commence comme normal et ouverture de la fenêtre:

driver = webdriver.PhantomJS 
driver() 

Mais dès que je tente de passer une commande comme ceci:

driver.set_window_size(1200, 1080) 

Les retours shell cette erreur:

TypeError: unbound method set_window_size() must be called with WebDriver instance as first argument (got int instance instead) 

J'ai essayé plusieurs commandes, parfois c'est "got int instance", parfois "got str instance". Quelqu'un at-il une idée de ce que je fais de mal? Je cherche à exécuter des pilotes simultanés (un avec un proxy sans, peut être différents lanceurs), ou tuer l'original et ouvrir un original de travail. Également essayé multirunning avec le conducteur de chrome qui renvoie la même erreur dans les mêmes conditions.

Répondre

1

A été manquant un() après l'initialisation de l'élément. Si vous avez également gaspillé 7 heures de votre vie à ce sujet, j'espère que vous ressentez un certain soulagement maintenant que vous savez que la bonne façon d'initialiser un pilote est driver = webdriver.PhantomJS().

+1

#iunderstandyourpain – Tom