Sto eseguendo alcuni unittests con Selenium Webdriver.Come passare correttamente l'autenticazione di base (ogni clic) utilizzando Selenium e phantomjs webdriver
Ho un intero test che viene eseguito con successo utilizzando webdriver.Firefox(), ecco il programma di installazione:
def setUp(self):
self.driver = webdriver.Firefox()
self.driver.implicitly_wait(30)
self.base_url = "http://www.nike.com"
self.verificationErrors = []
self.accept_next_alert = True
Il test viene eseguito con successo, però devo inserire manualmente più volte autenticazione base per il test per continuare ad andare avanti.
Nel tentativo di aggirare autenticazione di base e avere l'intero test veramente automatizzato, ho acceso da Firefox a phantomjs, come sembra, come si può passare in Basic Auth con ogni clic()
Qui è la mia messa a punto dopo il passaggio a phantomjs:
def setUp(self):
dcap = dict(DesiredCapabilities.PHANTOMJS)
dcap["phantoms.page.settings.userName"] = ("testuser")
dcap["phantoms.page.settings.userPassword"] = ("testpass")
self.driver = webdriver.PhantomJS(desired_capabilities=dcap, service_args=['--ignore-ssl-errors=true'])
self.driver.implicitly_wait(30)
self.base_url = "http://www.nike.com
self.verificationErrors = []
self.accept_next_alert = True
ma ottengo il seguente errore:
NoSuchElementException: Message: {"errorMessage":"Unable to find
element with xpath '(//button[@type='button'])[2]'","request":
{"headers":{"Accept":"application/json","Accept-Encoding":"identity",
"Connection":"close","Content-Length":"113","Content- Type":"application/json;charset=UTF-8",
"Host":"127.0.0.1:58025","UserAgent":"Pythonurllib/2.7"},"httpVersion":"1.1",
"method":"POST","post":"{\"using\": \"xpath\", \"sessionId\": \"c2fa02e0-1df0-11e6-a2ad-c325e56df16d\",
\"value\": \"(//button[@type='button'][2]\"}","url":"/element","urlParsed":
{"anchor":"","query":"","file":"element","directory":"/","path":"/element","relative":"/element","port":"","host":"",
"password":"","user":"","userInfo":"","authority":"","protocol":"","source":"/element","queryKey":{},"chunks":
["element"]},"urlOriginal":"/session/c2fa02e0-1df0-11e6-a2ad-c325e56df16d/element"}}
io non sono sicuro se questo errore è solo una differenza tra phantomjs e Firefox, o se sto solo passando in modo errato.
Grazie, sarà presente quindi passare l'authentication_token su ogni successivo click? – david
Sì se il clic è un collegamento a una nuova pagina, ma non sono sicuro per una chiamata Ajax. –
Ho accettato la risposta, tuttavia questo non ha risolto il problema poiché l'autenticazione di base è richiesta da più host (il contenuto incorporato nella pagina richiede la sua autenticazione di base). Non sono sicuro che ci sia un modo per passare credenziali a più host in questo modo usando Selenium, pensavo che i phantomjs avrebbero offerto una soluzione alternativa, ma non credo. – david