вот
Вот по этому не люблю PageFactory! :)
Меняй Xpath в самом методе PageObject
55 публикаций создано DennisM (учитываются публикации только с 05 июня 2023)
Отправлено автор: DennisM 18 марта 2016 - 15:14 в Selenium - Functional Testing
Отправлено автор: DennisM 04 апреля 2016 - 14:16 в Selenium - Functional Testing
Отправлено автор: DennisM 04 апреля 2016 - 14:19 в Selenium - Functional Testing
Отправлено автор: DennisM 07 июля 2016 - 14:41 в Selenium - Functional Testing
запусти без указания тагов и папки с тестами. В плагине в pom.xml таги и папка с фичами уже указаны
просто
mvn clean test
Отправлено автор: DennisM 06 июля 2016 - 13:42 в Selenium - Functional Testing
Всем привет,
вопрос по поводу параллельного запуска тестов на cucumbere.
Как сделать одновременный запуск двух разных тестов из разных features?
Так выше же всё рассказано. Через профайл Maven. Всё работает.
По этому примеру всё из папки с Фичами собирается в кучу и запускается. Сколько файлов с Фичами, столько потоков.
Отправлено автор: DennisM 07 июля 2016 - 13:13 в Selenium - Functional Testing
У меня есть две (feateres)
@runTest
Feature: Accreditation Individual Entrepreneur@runTest
Feature: User Create Auction
запуск произвожу через командную строку:
mvn test -Dcucumber.options="src/test/Resorses/Features --tags @runTest"
он мне запускает параллельно сценарий из Feature: Accreditation Individual Entrepreneur (в двух браузерах)
и после завершения из Feature: User Create Auction
а я можно сделать так чтоб одновременно запускался сценарий из Feature: Accreditation Individual Entrepreneur (в одном окне браузере)
и Feature: User Create Auction в другом окне
Можешь дать структуру папки с фичами? И сами фичи?
Отправлено автор: DennisM 04 апреля 2016 - 14:01 в Selenium - Functional Testing
C огурцом особенно не связывался, поэтому не могу ничего посоветовать, но селениум тут точно ни при чём. За параллельный запуск он не отвечает. А гуглить пытались?
Вот какой-то пример сразу https://opencredo.co...ts-in-parallel/
Этот вариант похоже единственный в инете. Именно по этой ссылке всё устарело. Танцую с бубном второй день вокруг этой статьи. :)
Вот его обновление:
https://opencredo.co...test-execution/
Также код:
Отправлено автор: DennisM 01 апреля 2016 - 17:17 в Selenium - Functional Testing
С Junit всё просто. В Maven ставим это и всё ок.
<plugins>
То же самое с Cucumber не проходит. Всё время 1 Thread...
Отправлено автор: DennisM 08 июля 2016 - 13:20 в Selenium - Functional Testing
Отправлено автор: DennisM 07 июля 2016 - 15:27 в Selenium - Functional Testing
Ух ёпт. У тебя эти таги не указаны!Запиши: <tags>@runTest</tags><configuration><!-- Mandatory --><!-- comma separated list of package names to scan for glue code --><glue>ru.StepDefinitions</glue><!-- These are the default values --><!-- Where to output the generated Junit tests --><outputDirectory>${project.build.directory}/generated-test-sources/cucumber</outputDirectory><!-- The diectory containing your feature files. --><featuresDirectory>src/test/Resorses/Features/</featuresDirectory><!-- Directory where the cucumber report files shall be written --><cucumberOutputDir>target/cucumber-parallel</cucumberOutputDir><!-- comma separated list of output formats --><format>html</format><!-- CucumberOptions.strict property --><strict>true</strict><!-- CucumberOptions.monochrome property --><monochrome>true</monochrome><!-- The tags to run, maps to CucumberOptions.tags property --><tags></tags><!-- If set to true, only feature files containing the requiredtags shall be generated. --><!-- Excluded tags (~@notMe) are ignored. --><filterFeaturesByTags>true</filterFeaturesByTags></configuration>
В секцию добавил <tags>"@runTest"</tags>Вот такая ошибка у меня возникла, которую я победить не смог ((ошибка была и ранее, когда настраивал по вашему сценариюD:\git\AQC\test>mvn clean test[INFO] Scanning for projects...[WARNING][WARNING] Some problems were encountered while building the effective model for ru:rts-tender:jar:1.0-SNAPSHOT[WARNING] 'build.plugins.plugin.(groupId:artifactId)' must be unique but found duplicate declaration of plugin org.apache.maven.plugins:maven-surefire-plugin @ line 104, column 21[WARNING][WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.[WARNING][WARNING] For this reason, future Maven versions might no longer support building such malformed projects.[WARNING][INFO][INFO] ------------------------------------------------------------------------[INFO] Building rts-tender 1.0-SNAPSHOT[INFO] ------------------------------------------------------------------------[INFO][INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ rts-tender ---[INFO] Deleting D:\git\AQC\test\target[INFO][INFO] --- cucumber-jvm-parallel-plugin:1.3.0:generateRunners (generateRunners) @ rts-tender ---[INFO] Adding D:\git\AQC\test\target\generated-test-sources\cucumber to test-compile source root[INFO][INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ rts-tender ---[INFO] Using 'UTF-8' encoding to copy filtered resources.[INFO] skip non existing resourceDirectory D:\git\AQC\test\src\main\resources[INFO][INFO] --- maven-compiler-plugin:3.5.1:compile (default-compile) @ rts-tender ---[INFO] Changes detected - recompiling the module![INFO] Compiling 111 source files to D:\git\AQC\test\target\classes[INFO] /D:/git/AQC/test/src/main/java/Helpers/UserProfiles/SupplierLegalEntityProfile.java: Some input files use unchecked or unsafe operations.[INFO] /D:/git/AQC/test/src/main/java/Helpers/UserProfiles/SupplierLegalEntityProfile.java: Recompile with -Xlint:unchecked for details.[INFO][INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ rts-tender ---[INFO] Using 'UTF-8' encoding to copy filtered resources.[INFO] skip non existing resourceDirectory D:\git\AQC\test\src\test\resources[INFO][INFO] --- maven-compiler-plugin:3.5.1:testCompile (default-testCompile) @ rts-tender ---[INFO] Changes detected - recompiling the module![INFO] Compiling 11 source files to D:\git\AQC\test\target\test-classes[INFO][INFO] --- maven-surefire-plugin:2.19.1:test (default-test) @ rts-tender ----------------------------------------------------------T E S T S-------------------------------------------------------None of the features at [classpath:Features/AccreditationEntrepreneur.feature] matched the filters: [@runTest]None of the features at [classpath:Features/FullAuction.feature] matched the filters: [@runTest]0 Scenarios0 Steps0m0,000s0 Scenarios0 Steps0m0,000sResults :Tests run: 0, Failures: 0, Errors: 0, Skipped: 0[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 3.258 s[INFO] Finished at: 2016-07-07T18:14:18+03:00[INFO] Final Memory: 26M/311M[INFO] ------------------------------------------------------------------------
было такое. Проблема решилась перемещением файлов фичей в первую после resources папку (не далее). и переименуй всё в lowercase. Плагин капризный! :)
\src\test\resources\cucumber\TestCase.feature
Отправлено автор: DennisM 07 июля 2016 - 14:48 в Selenium - Functional Testing
Отправлено автор: DennisM 04 апреля 2016 - 13:26 в Selenium - Functional Testing
при чём тут селениум?
Отправлено автор: DennisM 11 июля 2016 - 13:57 в Selenium - Functional Testing
Столкнулся с регрессией. Компонент визуально скрыт, но WebDriver упорно отвечает, что isDisplayed=true, а при попытке .click() соответственно валится с ElementNotFound. Вот сам элемент
Сейчас переводим приложение на React, часть ещё на Angular, так что периодически всплывают такие вот интересные аномалии...
Когда элемент виден, добавляется класс "show-dates", но, честно говоря, переделывать везде ожидание видимости на проверку наличия класса... это не наш метод. Да и не гарантирует он видимость-невидимость. Что делать, ребята? Пинать девелопера? Он клянётся, что всё работает как раньше на ангуляре, но по факту - нет.
Жди элемента по примеру:
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
new WebDriverWait(driver, 10).until(ExpectedConditions.presenceOfElementLocated(ElementLocator));
или
new WebDriverWait(driver, 10).until(ExpectedConditions.visibilityOfElementLocated(ElementLocator));
или проверяй boolean из
boolean visible = ExpectedConditions.visibilityOfElementLocated(ElementLocator);
не поможет, смотри другие проверки из ExpectedConditions
Отправлено автор: DennisM 02 июня 2016 - 13:36 в Selenium - Functional Testing
Вот что лень делает с тестировщиками... ID еще подавай с голубой каемочкой. Девелоперам без вас хватает мозготр!@%а. ;)
Отправлено автор: DennisM 14 апреля 2016 - 13:38 в Selenium - Functional Testing
Окей, продолжаем увлекательный забег по граблям :)Нефиг тут бюрократию ворошить. Хуже будет!
У меня на проекте нет вообще id и всё работает норм. Те кто требуют id или неопытные или ленивые... ;)
Отправлено автор: DennisM 19 февраля 2016 - 16:18 в Selenium - Functional Testing
Если ничего не помогает, убиваем жестко. :)
Извлечь комманду:
taskkill /f /im firefox.exe
или
taskkill /f /im chrome.exe
или
taskkill /f /im iexplorer.exe
Метод для этого:
public String execCmdCommand(String command){StringBuffer output = new StringBuffer();Process p;try {p = Runtime.getRuntime().exec(command);p.waitFor();BufferedReader reader =new BufferedReader(new InputStreamReader(p.getInputStream()));String line = "";while ((line = reader.readLine())!= null) {output.append(line + "\n");}} catch (Exception e) {e.printStackTrace();}return output.toString();}
это всё понятно, но как выбрать именно нужный экземпляр? тесты то раннятся в параллель и висит несколько инстансов
Для этого надо указывать PID (Process ID)
taskkill /pid 1230
https://technet.micr...y/bb491009.aspx
Вот как достать PID из текущего WebDriver теста в JAVA нужно поискать... Например:
http://stackoverflow...hed-by-selenium
Или просто после всех тестов убивай все оставшиеся браузеры.
Отправлено автор: DennisM 18 февраля 2016 - 14:33 в Selenium - Functional Testing
При driver.close() просто закрывается текущее окно и всё, а там уже сам браузер пусть решает, что ему делать.
Зато при driver.quit() закрываются все окна браузера и останавливается процесс браузера. В операционной системе Windows для этого используется как раз taskkill. Именно поэтому второй раз убивать его нет смысла. Дважды не казнят :)
webDriver.Close() – Close() method closes the browser window that the driver has focus of.
webDriver.Quit() – Calls dispose; in other terms quit() method calls dispose method which will turn all the browser windows closed and ends webdriver session.
webDriver.Dispose() – Dispose() method closes all browser windows and safely ends the session.
taskkill - убивает всё не safely. :)
Отправлено автор: DennisM 17 февраля 2016 - 14:13 в Selenium - Functional Testing
Там и так taskkill выполняется, после этого Selenium 10 секунд ждёт завершения процесса. Судя по всему, этого времени просто не хватает, но в конце концов процесс всё таки останавливается. Так что необходимости повторно делать ему taskkill я не вижу.
Я не знаю что делает селениум при driver.close() . Похоже просто пытается закрыть корректно. Но taskkill убивает браузер всегда. Не закрывает аппликашку а убивает именно процесс.
Отправлено автор: DennisM 14 апреля 2016 - 13:16 в Selenium - Functional Testing
//div[contains(@id, 'popup') AND @class="buttons"]/button[text()='OK']
//div[@class="buttons"]/button[text()='OK']
//div[@class="buttons"]/button[1]
Отправлено автор: DennisM 16 февраля 2016 - 16:00 в Selenium - Functional Testing
Если ничего не помогает, убиваем жестко. :)
Извлечь комманду:
taskkill /f /im firefox.exe
или
taskkill /f /im chrome.exe
или
taskkill /f /im iexplorer.exe
Метод для этого:
Отправлено автор: DennisM 14 апреля 2016 - 13:52 в Selenium - Functional Testing
Вполне может быть что у тебя в коде несколько окон и на данный момент теста только одно видимое. Добавляем условие contains(@style, 'display: block')
//div[contains(@id, 'popup') AND contains(@style, 'display: block')]//div[@class="buttons"]/button[text()='OK']
Отправлено автор: DennisM 14 апреля 2016 - 13:47 в Selenium - Functional Testing
Нефиг тут бюрократию ворошить. Хуже будет!Вот несколько примеров://div[contains(@id, 'popup') AND @class="buttons"]/button[text()='OK']
//div[@class="buttons"]/button[text()='OK']
//div[@class="buttons"]/button[1]
Спасибо за примеры! По всем 3-м к сожалению находится ещё 3-5 вариантов, соответственно локатор ссылается не на то что нужно. Пока честно говоря не знаю что делать, т.к. сроки есть, а разумным решением видится действительно продавливание разработчиков в сторону статичных id
я не вижу кода всей страницы. Можно было бы сочинить что-нибудь точнее.
Отправлено автор: DennisM 29 июня 2016 - 15:39 в Selenium - Functional Testing
Были такие грабли. Скроллится отлично этим:
import org.openqa.selenium.interactions.Actions;
***
Actions mouse = new Actions(driver);
mouse.moveToElement(driver.findElement(element_locator)).build().perform();
Отправлено автор: DennisM 11 марта 2016 - 20:33 в Selenium - Functional Testing
Отправлено автор: DennisM 27 мая 2016 - 16:08 в Selenium - Functional Testing
Код:
waitmis.Until(ExpectedConditions.ElementExists(By.XPath("//html/body/div[1]/div[1]/ul/li[1]/ul/li[2]/a")));var search = Driver.FindElement(By.XPath("//html/body/div[1]/div[1]/ul/li[1]/ul/li[2]/a"));
За такие XPath нужно линейкой по пальцам бить!
Community Forum Software by IP.Board Русификация от IBResource
Лицензия зарегистрирована на: Software-Testing.Ru