Je travaille sur Selenium et Firefox sous Ubuntu14.04. J'ai créé un nouvel onglet par send_keys (Keys.CONTROL + 't'), mais continue à donner des commandes sur le premier onglet, peut-être parce que je ne me suis pas concentré sur le nouvel onglet correctement.Selenium et Firefox sur Ubuntu: mise au point sur le nouvel onglet
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys
driver = webdriver.Firefox()
main_window = driver.current_window_handle
driver.get("https://www.google.com")
driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + 't')
driver.switch_to_window(main_window)
driver.get("http://www.bing.com")
driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + 't')
driver.switch_to_window(main_window)
driver.get("https://github.com/login")
Il n'y a pas d'erreur lors de l'exécution de ce code.
Je fais un nouvel onglet après aller à google.com, et l'écran se change en une page vierge sur le nouvel onglet. Après cela, j'ai écrit driver.switch_to_window (main_window) pour me concentrer sur le nouvel onglet afin de m'assurer que les prochaines lignes de code arriveront sur le nouvel onglet. Mais lorsque driver.get ("http://www.bing.com") est exécuté, l'écran revient au premier onglet où google.com est présent et change google.com en bing.com. Même chose pour le code suivant. Un autre nouvel onglet a été créé, mais il revient au premier onglet en tant que driver.get ("https://github.com/login") exécuté et bing.com devient github.com/login.
Je pensais que je me suis concentré sur l'onglet visible actuelle par
main_window = driver.current_window_handle; driver.switch_to_window (main_window),
Mais cela n'a pas bien fonctionné. Comment puis-je charger les 3 pages Web sur 3 onglets différents?
CARACTÉRISTIQUES:
- Sélénium 3.0.2
- Firefox 45.0.1
- Ubuntu 14.04 amd 64bit
- python 2.7.6
Ce n'est pas ce que je cherche. Je voulais créer des onglets et mettre l'accent sur le nouvel onglet. Votre réponse est de faire une nouvelle fenêtre de Firefox et passer d'une fenêtre à l'autre. –
Que voulez-vous dire «mettre l'accent sur le nouvel onglet»? Et pour quoi? "Passer" à un nouvel onglet signifie "se concentrer" dessus ... non? – Andersson
Pas exactement. dans Selenium, même si vous passez à un nouvel onglet, vous ne pourrez peut-être rien faire si vous vous concentrez sur le nouvel onglet. commutation et mise au point sont différents, autant que je sache. Voir le code à https://gist.github.com/lrhache/7686903. il y a un commentaire disant # Mettre l'accent sur la fenêtre courante qui, en fait, mettra l'accent sur l'onglet visible actuel -> browser.switch_to_window (main_window) –