Как отправить текст в поле имени пользователя и пароля на веб-странице через Safari Browser и selenium-webdriver - PullRequest
0 голосов
/ 10 сентября 2018

Я пытаюсь войти на веб-страницу, для которой я должен писать тестовые сценарии. Но сценарий входа в систему каждый раз в Safari не выполняется, хотя тот же сценарий хорошо работает в Chrome.

Отображается сообщение об ошибке:

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}

Сценарий, который я использую: открытый класс 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//

Есть ли способ пройти это или решить это?

1 Ответ

0 голосов
/ 11 сентября 2018

Это сообщение об ошибке ...

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)

... означает, что экземпляру WebDriver не удалось найти какой-либо элемент в соответствии с используемой вами стратегией Locator .

Вам необходимо позаботиться о нескольких вещах следующим образом:

  • Другой браузер отображает HTML DOM по-другому, поэтому вам нужно создать Стратегии локатора для работы Кросс-браузер .
  • Поскольку имя пользователя / адрес электронной почты и ваш пароль поля оба находятся на одной странице, вы должны WebDriverWait только один раз.
  • Так как вам нужно вызвать метод sendKeys(), вместо ExpectedConditions для visibilityOfElementLocated() вам необходимо использовать метод elementToBeClickable().
  • Ваш эффективный кодовый блок будет:

    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");
        }
    }
    
  • Снимок браузера (с GeckoDriver / Firefox):

yapi_login

...