2017-07-27 3 views
0

J'utilise python 2.7. J'ai regardé thesequestions pour l'aide avec l'ouverture des liens dans de nouveaux onglets, et cela semble fonctionner initialement. Cependant, je rencontre un problème une fois que j'essaie de fermer un onglet. Voici mon code:selenium/python: après fermeture de l'onglet, essayer d'ouvrir un nouvel onglet ouvre l'onglet précédemment fermé

actions.key_down(Keys.COMMAND).click(people[x]).key_up(Keys.COMMAND).perform() 
driver.switch_to.window(driver.window_handles[-1]) # now at user page 
# interact with user page 
driver.close() 
driver.switch_to.window(driver.window_handles[0]) 

C'est dans une boucle en passant par chaque élément du tableau de personnes, où les gens est une liste d'éléments Web qui correspondent aux profils individuels Twitter qu'un utilisateur suit. Lors de la première exécution, il clique correctement sur le profil de la première personne dans un nouvel onglet, passe à l'onglet qui a été créé, interagit avec lui, le ferme et se recentre sur l'onglet d'origine (avec la liste des personnes). Cependant, sur la deuxième itération, quand il "clique" sur la deuxième personne, il ouvre en fait un onglet pour la 1ère personne et la 2ème personne, ce qui n'est pas correct. Je crois que cela ne devrait être que cliquer sur une chose, qui serait maintenant le profil de la 2ème personne, puisque je n'ai qu'une action d'un clic et c'est sur people[x].

Qu'est-ce qui pourrait ne pas fonctionner?

Répondre

0

Essayez de itérer cette partie:

driver.switch_to.window(driver.window_handles[-1]) 

donc votre deuxième utilisateur soit comme:

driver.switch_to.window(driver.window_handles[-2]) 

Vous devez déclarer la variable globale et modifiez la valeur à la fin de boucle.

Espérons que ça aide.

+0

Bien que cela fonctionne techniquement, maintenant que j'interagis avec la bonne page, cela ne résout toujours pas le problème d'ouverture de plusieurs onglets à chaque clic. Je voudrais vraiment trouver un moyen d'ouvrir uniquement l'onglet correspondant à l'utilisateur sur lequel je veux cliquer, car sinon il me reste beaucoup d'onglets ouverts, même si je ne les utilise pas. Étant donné que je vais le faire près de 100 fois, je ne suis pas sûr que Chrome puisse gérer autant d'onglets ouverts à la fois, et je veux éviter de devoir fermer n-1 chaque fois car je pense que ce serait très inefficace. –