Как заставить TestNG и ANT разговаривать по русски

Вчера мучался с этим полдня, обгуглился до дрожи в пальцах, но так и не нашел решение. TestNG при запуске через IDEA и своих отчетах выдавал мне ??? вместо русских букв. Самый фак был ещё и в том, что в testng.xml присутствовали параметры на русском языке и ничего не работало. Докопался до того, что при запуске сборки Ant она сама запускает JVM со своими параметрами, такими как classpath и ea (enable assertions), но как туда впихнуть -Dfile.encoding=UTF-8 ?

Оказывается, в таргете внутри ant.xml нужно всего лишь указать следующее (см. строку 4):

<target name=\"test\" depends=\"compile\">  
    <testng outputdir=\"${testdir}\" classpathref=\"all.classpath\" haltOnFailure=\"true\">  
        <xmlfileset dir=\"${basedir}\" includes=\"testng.xml\"/>  
        <jvmarg value=\"-Dfile.encoding=UTF-8\" />  
    </testng>  
</target>

 

Как в TestNG передавать переменные между файлами классов

Легко. Если у вас тестСьюты лежат не только в разных классах, но также и в разных .java файлах, нужные переменные можно передавать, записывая их в ITestContext в одном классе, а потом читая их оттудаже в другом классе. ITestContext это данные, которые могут перезаписывать или использовать любые тест методы в TestNG.

Записываем данные:

@Test(description=\"Найти код\")  
public void check(ITestContext context) {  
    data = SomeClass.doSomething(driver, data, config);  
    context.setAttribute(\"myVariable\", data);  
}

Читаем их в другом классе:

@Test(description=\"test2\")  
public void test2(ITestContext context) {  
    String data = (String) context.getAttribute(\"myVariable\");  
}

Как с помошью Selenium зааплодить файл в невидимый инпут

Нужно сначала его сделать видимым. Вот функция, которая принимает xpath инпута и драйвер, инициализированный ранее, и удаляет все классы:

public static void jsDeleteClasses(String xpath, WebDriver driver) throws InterruptedException {  
    JavascriptExecutor js = (JavascriptExecutor) driver;  
    String script = \"document.evaluate(\\\"\"+xpath+\"\\\", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null)\" +  
            \".singleNodeValue.setAttribute('class', '');\";  
    js.executeScript(script);  
}

Можно переделать чтоб удаляла атрибут style, например.