String doc_num = "1231231231"; @FindBy (xpath = "//input[@docnumber='" + doc_num + "']") WebElement changeDocument; // выбор документа
я ведь не могу просто переменную создать она будет ругаться
attribute value must be constant
36 публикаций создано thepauloo89 (учитываются публикации только с 22 мая 2023)
Отправлено автор: thepauloo89 16 марта 2016 - 09:06 в Selenium - Functional Testing
String doc_num = "1231231231"; @FindBy (xpath = "//input[@docnumber='" + doc_num + "']") WebElement changeDocument; // выбор документа
я ведь не могу просто переменную создать она будет ругаться
attribute value must be constant
Отправлено автор: thepauloo89 16 марта 2016 - 08:58 в Selenium - Functional Testing
doc_num = "123" doc_num_search_xpath = "//input[@docnumber='" + doc_num + "']"
а можешь целиком метод описать ? я не совсем понимаю где это писать.
вот мой код
ublic class BookingCart extends FirstClasss {
public BookingCart(WebDriver driver) {
super(driver);}
вот тут нужно создать??? (
private String docnum;
@FindBy (xpath = "//input[@docnumber='" + doc_num + "']")
WebElement changeDocument; // выбор документа
я ведь не могу просто переменную создать она будет ругаться
attribute value must be constant
Отправлено автор: thepauloo89 16 марта 2016 - 09:19 в Selenium - Functional Testing
Отправлено автор: thepauloo89 16 марта 2016 - 09:24 в Selenium - Functional Testing
package main;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
/**
* Created by thepauloo89 on 15.03.2016.
*/
public class BookingCart extends FirstClass {
public BookingCart(WebDriver driver) {
super(driver);}
String doc_num = "1231231231";
@FindBy (xpath = "//input[@docnumber='" + doc_num + "']") // вот это он подчеркивает и пишет attribute value must be constant
WebElement changeDocument; // выбор документа
}
Отправлено автор: thepauloo89 16 марта 2016 - 07:27 в Selenium - Functional Testing
Отправлено автор: thepauloo89 16 марта 2016 - 08:50 в Selenium - Functional Testing
Например метод в который я передаю данные вот так выглядит.
public void otkudaKuda(String otkuda, String kuda){
departure.sendKeys(otkuda);
wait.until(ExpectedConditions.elementToBeClickable(dropListotkuda));
dropListotkuda.click();
arrival.sendKeys(kuda);
wait.until(ExpectedConditions.elementToBeClickable(dropListKuda)).click();
как то по аналогии с этим можно передавать в поиск Элемента данные?
Отправлено автор: thepauloo89 16 марта 2016 - 10:28 в Selenium - Functional Testing
попробуй так
String doc_num = "1231231231"; String doc_num_xpath = "//input[@docnumber='" + doc_num + "']") driver.findElement(By.xpath(doc_num_xpath));
Спасибо за помощь уместил все это и зхаработало!!!! МУХАХАХАХХА
сделал вот так
public void changeDocNum(String docNum) {
String docNumXpath = "//input[@docnumber='" + docNum + "']";
driver.findElement(By.xpath(docNumXpath)).click();
}
когда делал вспомнил что делал подобное с дабл кликом чтобы так же делать дабл клик на любой Элемент.
Отправлено автор: thepauloo89 16 марта 2016 - 07:46 в Selenium - Functional Testing
xpath //input[type='radio'][contains(text,'ПН:')]не работает
а как то приравнять поиск по ID в поиск по docnumber и передавать в него нужный мне номер возможно?
Отправлено автор: thepauloo89 16 марта 2016 - 08:44 в Selenium - Functional Testing
xpath //input[type='radio'][contains(text,'ПН:')]Ага, неправильный. Во-первых, нужны скобки после text(), во-вторых, input не содержит текста в данном случае.
а в третьих нет @ перед аттрибутом. Спасибо.
xpath //input[type='radio'][contains(text,'ПН:')]не работает
а как то приравнять поиск по ID в поиск по docnumber и передавать в него нужный мне номер возможно?
да, xpath не правильный)
если я правильно понял, что ты имеешь ввиду, то вот так
//input[@docnumber='1231231231']но это снова xpath
тут он будет выбирать по конкретному номеру документа, нужно чтобы в коде не был указан номер документа чтобы я мог его универсально использовать для разных тестов
не очень понял. ну подтяни из базы номер документа и подставляй в xpath.
Ты этот докнамбер сам создаешь же через UI ?
@FindBy (xpath = "//input[@docnumber='1231231231']")
WebElement changeDocument; // выбор документа
он так находит этот вариант я знал, но я не знаю как в данном случае сделать то что после знака "=" переменной
docnumber создается когда я создаю паспорт пользователю, паспорта у тестового пользователя я знаю но я хотел сделать метод в который при написании теста я мог бы передать любые цифры вот так так
bookingCart.changeDocument(номер нужного документа).click(); я понимаю что так можно делать с полем ввода и как это сделать с полем ввода я знаю, а можно как либо сделать это именно с поиском Элемента?
Отправлено автор: thepauloo89 16 марта 2016 - 07:50 в Selenium - Functional Testing
xpath //input[type='radio'][contains(text,'ПН:')]
Отправлено автор: thepauloo89 16 марта 2016 - 07:44 в Selenium - Functional Testing
xpath //input[type='radio'][contains(text,'ПН:')]
не работает
Отправлено автор: thepauloo89 16 марта 2016 - 08:30 в Selenium - Functional Testing
xpath //input[type='radio'][contains(text,'ПН:')]Ага, неправильный. Во-первых, нужны скобки после text(), во-вторых, input не содержит текста в данном случае.
*** Element info: {Using=xpath, value=//input[type='radio'][contains(text,'ПН:')]}
тоже не подходит(
Отправлено автор: thepauloo89 16 марта 2016 - 08:09 в Selenium - Functional Testing
xpath //input[type='radio'][contains(text,'ПН:')]не работает
а как то приравнять поиск по ID в поиск по docnumber и передавать в него нужный мне номер возможно?
да, xpath не правильный)
если я правильно понял, что ты имеешь ввиду, то вот так
//input[@docnumber='1231231231']но это снова xpath
тут он будет выбирать по конкретному номеру документа, нужно чтобы в коде не был указан номер документа чтобы я мог его универсально использовать для разных тестов
Отправлено автор: thepauloo89 22 марта 2016 - 12:15 в Selenium - Functional Testing
версии вёбдрайвера и браузеров последние?
обновил WebDraiver хрома и FF ничего не изменилось(
Отправлено автор: thepauloo89 22 марта 2016 - 12:53 в Selenium - Functional Testing
Отправлено автор: thepauloo89 23 марта 2016 - 06:43 в Selenium - Functional Testing
я имею ввиду версию самих браузеров, а не chromedriver.
Попробуй обновить браузеры в общем и перезагрузиться.
Chrome новый и webdriver новый,
FF новый так же
Отправлено автор: thepauloo89 22 марта 2016 - 11:13 в Selenium - Functional Testing
Есть подозрение, что это проблема реализации в связке селениум-файрфокс:
https://github.com/s...nium/issues/878
https://github.com/S...ium/issues/1188
Попробуйте проверить в другом браузере, не на файрфоксе
началось это на хроме, потом пробовал и IE
ошибка не от браузера
Отправлено автор: thepauloo89 24 марта 2016 - 05:27 в Selenium - Functional Testing
проблема решена, дело было в методе который у меня проверяет все ли аяксы на странице закончены, проверка посылала слишком много запросов и делала это каждый раз через новые порты, тем самым их занимая, и не успевала освобождать. добавил в метод паузу теперь при приходе проверки после каждого прохода он ждет секунду.
вот методы первый сам из за которого проблема, второй это пауза.
public void waitForAjaxToFinish() {
long currentTime = System.currentTimeMillis();
while (System.currentTimeMillis() - currentTime < 10000) {
boolean ajaxFinished = (Boolean) ((JavascriptExecutor) driver)
.executeScript("return !!jQuery && jQuery.active == 0");
pause(1000);
if (ajaxFinished)
return;
}
throw new AssertionError("Ajax haven't finished its job in 100 sec");
}
public void pause(long mills) {
try {
Thread.sleep(mills); //1000 milliseconds is one second.
} catch (InterruptedException ex) {
Thread.currentThread().interrupt();
}
}
Отправлено автор: thepauloo89 22 марта 2016 - 10:18 в Selenium - Functional Testing
причем когда я использовал Junit такой проблемы не было
Отправлено автор: thepauloo89 22 марта 2016 - 08:42 в Selenium - Functional Testing
Отправлено автор: thepauloo89 22 марта 2016 - 09:16 в Selenium - Functional Testing
Попробуйте использовать другой порт с номером менее 5000
а где меняются эти настройки ?
Отправлено автор: thepauloo89 22 марта 2016 - 10:18 в Selenium - Functional Testing
в консоле выполните команду:
netstat -n > C:/1.txtПрикрепите получившийся файл сюда.
ПС: вообще в этом выводе могут содержаться ваши личные данные, типа советую закрыть вкладки с порнухой в браузере прежде чем выполнять команду и выкладывать сюда =)
так скажите что там должно было быть и что там менять
Отправлено автор: thepauloo89 22 марта 2016 - 10:45 в Selenium - Functional Testing
после перезагрузки проблема на время исчезает ведь?
нет после перезагрузки не исчезает, в процессах драйвер закрывается, когда была команда driver.close то он висел в процессах, исправил на driver.quit теперь в процессах драйвера нет, плюс я очищаю процессы перед запуском.
Отправлено автор: thepauloo89 22 марта 2016 - 10:37 в Selenium - Functional Testing
ну там не должно быть много (тысячи) открытых соединений.
Если их много, то надо разбираться какое ПО их открывает. Если их мало, то вы не до конца пофиксили багу о которой говориться в первых 10 ссылках если гуглить текст ошибки.
так я понимаю что не пофиксил, в нем вот такого много TIME_WAIT
Отправлено автор: thepauloo89 31 января 2017 - 07:36 в Selenium - Functional Testing
Привет.
Нужна жесткая пауза.
хотел сделать через задержку и интервал проверки, т.е. паузу в интервал проверок.
Но пауза не выполняется, после нахождения элемента всеравно сразу продалжается выполнение.
WebDriverWait wait = new WebDriverWait(browser.getDriver(), 10000, 10000); WebElement elementik = wait.until(new ExpectedCondition<WebElement>(){ @Override public WebElement apply(WebDriver d) { return d.findElement(lblElement.getLocator()); }});Не понимаю почему не работает.
на сайте http://selenium2.ru/...ced-usage.html
описано:
Данный код будет либо выдаст исключение “TimeoutException” по прошествии 10 секунд, либо вернет найденный в течении 10 секунд элемент. По умолчанию “WebDriverWait” вызывает “ExpectedCondition” каждые 500 миллисекунд до тех пор, пока условие не будет удовлетворено. Условие считается удовлетворенным, если было возвращено “true” в случае булевого “ExpectedCondition” и не “null” для “ExpectedCondition” других типов.
т.к. не работает пауза 10000, решил попробовать паузу через интервал сделать, но тоже не работает.
нужна пауза равная Thread.sleep(1000);
что не так?
забыл про существование этой темы)) тему создал когда только начинал в этом всем разбираться)
сейчас делаю вот так паузу которая просто останавливает процесс, но такое использовать не рекомендуется, этот метод в главном классе описываю и потом где нужно просто вызываю
Пауза
public void pause(long mills) {
try {
Thread.sleep(mills); //1000 milliseconds is one second.
} catch (InterruptedException ex) {
Thread.currentThread().interrupt();
}
}
Community Forum Software by IP.Board Русификация от IBResource
Лицензия зарегистрирована на: Software-Testing.Ru