Ответы пользователя по тегу Selenium
  • Как оптимизировать тест?

    @Kenshir007
    Если речь о Java, то советую PropertyLoader

    public class PropertyLoader {

    private static final String PROP_FILE = "/application.properties";


    private PropertyLoader() {}

    public static String loadProperty(String name) {
    Properties props = new Properties();
    try {
    props.load(PropertyLoader.class.getResourceAsStream(PROP_FILE));

    } catch (IOException e) {
    e.printStackTrace();
    }

    String value = "";

    if (name != null) {
    value = props.getProperty(name);
    }
    return value;
    }
    }

    также нужно создать файл anyname.properties

    а там задавайте что хотите пример:

    user.username=${user.username}
    user.password=${user.password}

    grid2.hub= localhost:5555/wd/hub

    site.url= yoursite.ru

    browser.name= chrome

    admin.login=anyuser
    admin.pass=anypass
    Ответ написан
    Комментировать
  • Как правильно найти искомый элемент на странице?

    @Kenshir007
    Попробуйте:
    driver.findElement.byCSSSelector("a[href*='photos']")

    Я уже забыл, как на Питоне, но думаю смысл понятен

    На Java я написал бы

    @FindBy(css="a[href*='members']") private WebElement navMenuPhotos;
    Ответ написан
    Комментировать
  • Как научить автотест работать с alert окнами?

    @Kenshir007
    Я очень долго мучился с Аллертами принципе. Проблема в том, что если в проекте используются Иплицидные ожидания, то драйвер не всегда понимает появился ли алерт. Я решил эту проблему таким методом:
    public void acceptPopUp() {

    Integer tries = 0;
    Integer maxTries = 30;

    while (tries < maxTries) {
    tries++;

    try {
    disableImplicityWait();
    waitInSeconds(2);
    Alert alert = driver.switchTo().alert();
    if (alert != null && alert.getText().length() > 1) {
    alert.accept();
    enableImplicityWait();
    return;
    }
    waitInSeconds(1);

    } catch (Exception e) {
    e.getSuppressed();
    }
    }
    }
    private void disableImplicityWait() {
    driver.manage().timeouts().implicitlyWait(0, TimeUnit.SECONDS);
    }

    private void enableImplicityWait() {
    driver.manage().timeouts().implicitlyWait(45, TimeUnit.SECONDS);
    }
    Ответ написан