Abbiamo sviluppato un'estensione per Chrome e voglio testare la nostra estensione con Selenium. Ho creato un test, ma il problema è che la nostra estensione apre una nuova scheda quando viene installata e penso di ottenere un'eccezione dall'altra scheda. È possibile passare alla scheda attiva che sto testando? Oppure un'altra opzione è iniziare con l'estensione disabilitata, quindi accedere al nostro sito Web e solo successivamente abilitare l'estensione. È possibile? Ecco il mio codice:Come passare alla scheda attiva in Selenium?
def login_to_webapp(self):
self.driver.get(url='http://example.com/logout')
self.driver.maximize_window()
self.assertEqual(first="Web Editor", second=self.driver.title)
action = webdriver.ActionChains(driver=self.driver)
action.move_to_element(to_element=self.driver.find_element_by_xpath(xpath="//div[@id='header_floater']/div[@class='header_menu']/button[@class='btn_header signature_menu'][text()='My signature']"))
action.perform()
self.driver.find_element_by_xpath(xpath="//ul[@id='signature_menu_downlist'][@class='menu_downlist']/li[text()='Log In']").click()
self.driver.find_element_by_xpath(xpath="//form[@id='atho-form']/div[@class='input']/input[@name='useremail']").send_keys("[email]")
self.driver.find_element_by_xpath(xpath="//form[@id='atho-form']/div[@class='input']/input[@name='password']").send_keys("[password]")
self.driver.find_element_by_xpath(xpath="//form[@id='atho-form']/button[@type='submit'][@class='atho-button signin_button'][text()='Sign in']").click()
Il test fallisce con ElementNotVisibleException: Message: element not visible
, perché nella nuova scheda (aperta dal estensione) "Log In" non è visibile (credo che la nuova scheda viene aperta solo dopo che il comando self.driver.get(url='http://example.com/logout')
) .
Aggiornamento: ho scoperto che l'eccezione non è correlata alla scheda aggiuntiva, è dal nostro sito Web. Ma ho chiuso la scheda in più con questo codice, secondo il @ di aberna risposta:
def close_last_tab(self):
if (len(self.driver.window_handles) == 2):
self.driver.switch_to.window(window_name=self.driver.window_handles[-1])
self.driver.close()
self.driver.switch_to.window(window_name=self.driver.window_handles[0])
Dopo la chiusura della scheda in più, posso vedere il mio scheda nel video.
Non funziona, penso che non cambi la scheda perché nel video [http://app.crossbrowsertesting.com/public/id7ed71371078e 09/selenio/2710150/videos/z4345e99d45d6a156ebf] Vedo che la scheda attiva è la stessa. – Uri
@Uri non è così semplice analizzare il comportamento dei video. Ho aggiornato la risposta con un altro possibile approccio – aberna
@ Uri qual è stato l'approccio che ha risolto il problema? – aberna