2017-01-19 7 views
0

Я не могу получить WebDriverManager для работы. Я хотел бы использовать PhantomJSDriver без необходимости устанавливать системное свойство, как это:WebDriverManager для PhantomJSDriver не работает

System.setProperty("phantomjs.binary.path", "E:/phantomjs-2.1.1-windows/bin/phantomjs.exe"); 

У меня есть эта зависимость в моем pom.xml:

<dependency> 
    <groupId>org.seleniumhq.selenium</groupId> 
    <artifactId>selenium-server</artifactId> 
    <version>3.0.1</version> 
    </dependency> 
<dependency> 
    <groupId>io.github.bonigarcia</groupId> 
    <artifactId>webdrivermanager</artifactId> 
    <version>1.5.1</version> 
</dependency> 

Это мой код/​​тест:

import static org.junit.Assert.assertEquals; 
import org.junit.Test; 

public class TestA { 

    WebDriver driver; 

    @BeforeClass 
    public static void setupClass() { 
     PhantomJsDriverManager.getInstance().setup(); 
    } 

    @Before 
    public void setUp() { 
     driver = new PhantomJSDriver(); 
    } 

    @Test 
    public void test() { 
     driver.get("https://www.google.de/"); 
     System.out.println(driver.getTitle()); 
     assertEquals("Google", driver.getTitle()); 
    } 
} 

тест терпит неудачу:

org.junit.ComparisonFailure: expected:<[Google]> but was:<[]> 

Кто-нибудь знает, что я делаю неправильно? Заранее спасибо!


UPDATE: Теперь у меня есть еще одна проблема. Перед использованием webdrivermanager я имел это:

DesiredCapabilities dc = DesiredCapabilities.phantomjs(); 
dc.setJavascriptEnabled(true); 
dc.setCapability(PhantomJSDriverService.PHANTOMJS_CLI_ARGS, 
       new String[] { "--web-security=no", "--ignore-ssl-errors=yes" }); 

System.setProperty("phantomjs.binary.path", "E:/phantomjs-2.1.1-windows/bin/phantomjs.exe"); 
WebDriver driver = new PhantomJSDriver(dc); 

Теперь, когда я удалить строку с System.setProperty(...), он больше не работает. Спасибо за помощь.

+0

Убедитесь, что он действительно загрузил двоичный файл PhantomJS. Из его кода я вижу, что он генерирует журналы. Приложите их к вопросу или используйте их для решения этой проблемы. – Moshisho

ответ

3

Похоже, что вы делаете утверждение раньше, поэтому страница не загружается, когда вы вызываете getTitle(). Что напечатает ваш println?

Попробуйте добавить ожидание на свой тест, если вы знаете, что название страницы должно быть «Google», то почему бы не дождаться, пока это будет верно, прежде чем делать какие-либо дальнейшие утверждения? Когда заголовок страницы совпадает с ожидаемым, вы можете быть уверенно уверены, что страница загружена. Попробуйте следующее:

public Boolean waitForPageIsLoaded(String title) { 
    return new WebDriverWait(driver, 10).until(ExpectedConditions.titleIs(title)); 
} 
+0

По какой-то причине я думал, что тот же тест будет работать с FirefoxDriver, но на самом деле это не так. Ваш ответ работает на меня, спасибо! – Marco

+0

У меня есть еще одна проблема, я обновил свой вопрос. Может быть, вы также можете ответить на него? – Marco

+0

Задайте новый вопрос: – Cathal