0

I am trying to login to the webpage for which I am supposed to write test scripts. But the login script fails each time in Safari, although the same script runs well on Chrome.

Error message displayed:

Sep 10, 2018 10:55:06 AM org.openqa.selenium.support.ui.ExpectedConditions findElement
WARNING: WebDriverException thrown by findElement(By.id: mfacode)
org.openqa.selenium.WebDriverException: An unknown server-side error occurred while processing the command. (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 0 milliseconds
Build info: version: '3.14.0', revision: 'aacccce0', time: '2018-08-02T20:05:20.749Z'
System info: host: 'iMac.localdomain', ip: 'fe80:0:0:0:1c2b:a0b9:a043:3a94%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.13.6', java.version: '1.8.0_181'
Driver info: org.openqa.selenium.safari.SafariDriver
Capabilities {applicationCacheEnabled: true, browserName: safari, cleanSession: true, cssSelectorsEnabled: true, databaseEnabled: true, handlesAlerts: true, javascriptEnabled: true, locationContextEnabled: false, nativeEvents: true, platform: MAC, platformName: MAC, rotatable: false, version: 13605.3.8, webStorageEnabled: true}
Session ID: E2219A59-8EEE-4380-93B6-77A7DDE289BE
*** Element info: {Using=id, value=mfacode}

The script I am using: public class LoginSafari {

public static void main(String[] args) {

    System.setProperty("webdriver.safari.driver", "/usr/bin/safaridriver");
    WebDriver driver= new SafariDriver(); 
    driver.get("https://yapiapp.io/welcome");
    driver.manage().window().maximize();
    driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
    new WebDriverWait(driver, 30).until(ExpectedConditions.visibilityOfElementLocated(By.className("auth0-lock-input"))).sendKeys("alaka.goswami@*****.com");
    driver.findElement(By.name("password")).sendKeys("*******");
    driver.findElement(By.className("auth0-lock-submit")).click();
    // WebDriverWait wait=new WebDriverWait(driver, 40);
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);    
    new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.id("******")));
    // username and password masked//

Is there any way to get passed this or solve this?

DebanjanB
  • 118,661
  • 30
  • 168
  • 217

1 Answers1

0

This error message...

Sep 10, 2018 10:55:06 AM org.openqa.selenium.support.ui.ExpectedConditions findElement
WARNING: WebDriverException thrown by findElement(By.id: mfacode)
org.openqa.selenium.WebDriverException: An unknown server-side error occurred while processing the command. (WARNING: The server did not provide any stacktrace information)

...implies that the WebDriver instance was unable to find any element as per the Locator Strategy you have used.

You need to take care of a couple of things as follows:

  • Different browser renders the HTML DOM different so you need to construct Locator Strategies to work Cross Browser.
  • As the username/email and your password field both are on the same page you have to induce WebDriverWait only once.
  • As you need to invoke sendKeys() method so instead of ExpectedConditions as visibilityOfElementLocated() you need to use the elementToBeClickable() method.
  • Your effective code block will be:

    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.firefox.FirefoxDriver;
    import org.openqa.selenium.support.ui.ExpectedConditions;
    import org.openqa.selenium.support.ui.WebDriverWait;
    
    public class yapiapp_login {
    
        public static void main(String[] args) {
            System.setProperty("webdriver.safari.driver", "/usr/bin/safaridriver");
            WebDriver driver = new SafariDriver();
            driver.manage().window().maximize();
            driver.get("https://yapiapp.io/welcome");
            new WebDriverWait(driver, 30).until(ExpectedConditions.elementToBeClickable(By.cssSelector("input.auth0-lock-input[name='username  ']"))).sendKeys("alaka.goswami@*****.com");
            driver.findElement(By.cssSelector("input.auth0-lock-input[name='password']")).sendKeys("Alakananda Goswami");
        }
    }
    
  • Browser Snapshot(with GeckoDriver/Firefox):

yapi_login

DebanjanB
  • 118,661
  • 30
  • 168
  • 217