Стоит ли использовать Selenium com.thoughtworks.selenium.Wait для ожидания? (Спектакль) - PullRequest
1 голос
/ 10 марта 2011

Селен имеет класс com.thoughtworks.selenium.Wait для удобства. Я использую это следующим образом:

public void waitForElement(final String locator){
    Wait a = new Wait(){
        @Override public boolean until(){
             selenium.isElementPresent(locator);
        }
    }

    a.wait("Cannot found locator " + locator, TIMEOUT);
}

Как я понимаю, каждый раз, когда я вызываю свою функцию, создается новый анонимный класс, а затем создается объект этого класса. Или будет создан только один анонимный класс?

Во всяком случае. Как быстрее просто использовать Thread.sleep() непосредственно внутри метода waitForElement, а затем каждый раз создавать новый объект? Насколько большой может быть эта разница?

Ответы [ 3 ]

2 голосов
/ 10 марта 2011

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

Это будет экземпляр каждый раз, когда вы вызываете метод, но эти издержкидовольно маленький.

Если вы делаете это много, то вы можете легко создать (неанонимный) класс:

public class ElementPresenceWait extends Wait {
    private final String locator;

    public ElementPresenceWait(final String locator) {
        this.locator=locator;
    }

    @Override public boolean until(){
        selenium.isElementPresent(locator);
    }

    public void wait(long timeoutInMilliseconds) {
        wait("Cannot found locator " + locator, timeoutInMilliseconds);
    }
}

Тогда вы можете сделать более простой

new ElementPresenceWait("foo").wait(1000);
1 голос
/ 10 марта 2011

Смею сказать, что разница минимальна, и вы должны использовать то, что делает код более читабельным. По моему личному мнению, использование класса Wait более читабельно.

0 голосов
/ 10 марта 2011

Я не знаком с внутренней реализацией com.thoughtworks.selenium.Wait, однако обычно я предпочитаю писать «умные ожидания», которые сначала проверяют, затем спят четверть секунды, затем снова проверяют, затем спят ии так до тех пор, пока не будет достигнуто максимальное время ожидания.

Это обеспечивает более быстрое выполнение при ожидании чего-либо, кроме потока. Сон, который всегда должен ожидать максимальное время ожидания.

...