2016-07-01 9 views
0

Ich arbeite an einem Projekt in IntelliJ, das PhantomJS und Selenide verwendet, um Web-Browsing-Aktivität zu automatisieren. Um JavaScript-Befehle auszuführen, verwenden wir die Methode executeJavascript() in unserem Java-Code. Wir nennen diese Methode viele Male in unserem Code, um die Javascript-Befehle auszuführen, die wir wollen.Javascript arbeitet nicht mit Selenide und PhantomJS

Für diesen speziellen Fall machen wir ein Programm, das uns automatisch in Footlocker loggen sollte.

-Code für das Programm:

public Boolean doInBackground() { 
    WebDriver driver = getWebDriver(); 

    System.out.println("Running Footlocker"); 
    open(account.getEarlyLink()); //opens URL 
    System.out.println("Running Footlocker"); 
    if (!loggedIn) { 
     WebDriverRunner.setWebDriver(driver); 

     $("#guest_welcome_login").shouldBe(visible).click(); 

     $("#login_container").shouldBe(visible); 
    } 
      executeJavaScript("$('html').find('iframe').eq(1).contents().find('#login_email').val('%s')", account.getUsername()); 
     executeJavaScript(String.format("$('html').find('iframe').eq(1).contents().find('#login_password').val('%s')", account.getPassword())); 
     executeJavaScript("$('html').find('iframe').eq(1).contents().find('button.button.cta_button').click()"); 
     $("#member_welcome").shouldBe(visible); 
} 

Wenn wir das Programm ausführen, keine der executeJavascript() Befehle tatsächlich ausgeführt werden, aber wenn wir laufen jeden Befehl nacheinander in dem IntelliJ Ausdruck executer (im Debugger), Sie arbeiten.

Wer weiß, was hier passiert?

+0

Hallo Bill! Haben Sie versucht, in Frame zu wechseln? Typischerweise in Selen Sie –

Antwort

0

Haben Sie versucht, in den Rahmen zu schalten?

Normalerweise in Selen müssen Sie in Frame/iframe wechseln, um Zugriff auf seine Elemente zu erhalten. Gefällt mir:

switchTo(frame(1)); 
executeJavaScript("$('#login_email').val('%s')", account.getUsername()); 
Verwandte Themen