В знак (@) не вводится, когда я использую Selenium - PullRequest
0 голосов
/ 05 сентября 2018

Я пытался попрактиковаться в Selenium и не могу протестировать функцию регистрации из-за проверки электронной почты, но каждый раз, когда я запускаю тест, он вводит все, кроме знака "@", и, очевидно, это обязательный символ , Это сайт, который я тестировал -> http://a.testaddressbook.com/ (Извините, если все испортилось, я впервые здесь что-то написал)

Ожидаемый результат: yolo@test.com (отображается в поле ввода адреса электронной почты)

Фактический результат: yolotest.com без "@"

Файл определения шага (важная часть): StepDef.java

И страница, которая является ссылкой на файлы определения шага: SignUp.java

РЕДАКТИРОВАТЬ: я начал с Eclipse, а затем я перешел на IntelliJ (надеясь, что это была только проблема настроек IDE, но это не стоило - стоит попробовать). Я также попытался добавить Unicode знака "@", он все еще не набрал "@".

Как и просили, ниже вы можете найти фрагменты кода: SignUp.java (page)

package Pages;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.support.FindBy;

public class SignUp {

    @FindBy(id = "user_email")
    private WebElement userName;

    @FindBy(id = "user_password")
    private WebElement userPass;


    public void credentials(WebDriver driver) {
        Actions cred = new Actions(driver);
        cred.click(userName).sendKeys("yolo@test.com").perform();
        cred.click(userPass).sendKeys("Batman").perform();
    }
}

StepDef.java (файл определения шага)

@Then("^I fill out fields with information$")
public void i_fill_out_fields_with_information() throws Throwable {
    SignUp filldetails = PageFactory.initElements(driver, SignUp.class);
    filldetails.credentials(driver);
    Thread.sleep(2000);
}

РЕДАКТИРОВАТЬ (предлагаемый код):

package com.qa.quickstart.Bookthing;

import static org.junit.Assert.*;

import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

public class TestThing {


    ChromeDriver driver;
    String url="http://a.testaddressbook.com/sign_in";


    @Test
    public void test() throws InterruptedException {
         System.setProperty("webdriver.chrome.driver", "C:\\Users\\Laptop\\eclipse-workspace\\chromedriver.exe");
         driver = new ChromeDriver();
         driver.manage().window().maximize();
         driver.get(url);


         WebDriverWait wait = new WebDriverWait(driver, 50);
         driver.findElement(By.linkText("Sign up")).click();
         WebElement button = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//*[@value='Sign up']")));
         WebElement email = wait.until(ExpectedConditions.elementToBeClickable(By.id("user_email")));
         email.sendKeys("apple@test.com");
         WebElement pass = wait.until(ExpectedConditions.elementToBeClickable(By.id("user_password")));
         pass.sendKeys("banana");

         Thread.sleep(15000);
    }

}

Ответы [ 2 ]

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

Интересно, мне удалось решить проблему!

До решения я:

  • Я использовал Linux VM и использовал тот же код. Я обнаружил, что мой код на самом деле работает. Итак, я начал думать, что что-то на моем компьютере не позволяет писать «@» Selenium.
  • удалено / переустановлено Google Chrome
  • Изменена раскладка клавиатуры (по умолчанию был английский, но он также имел венгерскую раскладку в качестве опции, позже я решил переустановить его, решение не внесло в него никаких изменений, хотя по умолчанию английский)

но, видимо, решение было Key.Chord ! Пример:

email.sendKeys(Keys.chord(Keys.ALT, "batman@msn.com"));

или

email.sendKeys(Keys.chord("robin@msn.com"));

Это не профессионально, но все равно работает. Я также узнал, что после этого решения мой оригинальный код работал. Итак, я мог бы просто придерживаться этого кода ниже:

email.sendKeys("apple@test.com");

Короче говоря, если вы находитесь в подобной ситуации, просто попробуйте Key.Chord ! (а затем опробуйте свой оригинальный код)

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

Я попробовал приведенный ниже код, он работал нормально.

@Test(enabled=true)
public void loginTry() throws InterruptedException {
    driver.get("http://a.testaddressbook.com/sign_in");
    WebDriverWait wait = new WebDriverWait(driver, 50);
    wait.until(ExpectedConditions.elementToBeClickable(By.id("sign-in")));
    driver.findElement(By.linkText("Sign up")).click();
    WebElement button = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//*[@value='Sign up']")));
    WebElement email = wait.until(ExpectedConditions.elementToBeClickable(By.id("user_email")));
    email.sendKeys("yolo@test.com");
    WebElement pass = wait.until(ExpectedConditions.elementToBeClickable(By.id("user_password")));
    pass.sendKeys("somepassword");
    Thread.sleep(15000);

}
...