I banged my head on the wall for a long time, so I thought I would ask the “experts” why the code below would not work (enter the password) using PhantomJS, but it works fine with Firefox. The most disturbing of all is that one field record (username) is successful, but the second does not work at all. The page loads just fine, and I included test code to verify that other components were loading.
See the code below:
import java.io.File; import org.openqa.selenium.*; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.phantomjs.PhantomJSDriver; public class login { public static void main(String[] args) { WebDriver driver; Boolean verbose = false; //Change to true to test it with firefox String phantomPath = "../phantomjs-1.9.8-linux-i686/bin/phantomjs"; String url = "https://www.britishairways.com/travel/redeem/execclub/_gf/en_us"; if (verbose) { driver = new FirefoxDriver(); } else{ File file = new File(phantomPath); String userAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; cs; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8"; System.setProperty("phantomjs.binary.path", file.getAbsolutePath()); System.setProperty("phantomjs.page.settings.userAgent", userAgent); driver = new PhantomJSDriver(); } driver.get(url); try{ driver.findElement(By.id("membershipNumber")).sendKeys("1234"); System.out.println("ID input successful"); if (driver.findElement(By.id("ecuserlogbutton")).isDisplayed()) { System.out.println("Login Button is present"); } //This is where it fails with PhantomJS but work with Firefox driver.findElement(By.cssSelector("#pintr > #password")).sendKeys("1234"); System.out.println("password input successful"); } catch (Exception e){ System.out.print(e.getMessage()); } driver.close(); } }
source share