Перейти к содержимому

Публикации Choson

8 публикаций создано Choson (учитываются публикации только с 20 апреля 2023)


#179440 selenium + java. Ожидание загрузки.

Отправлено автор: Choson 24 мая 2021 - 10:27 в Selenium - Functional Testing

 

Для этого во втором ожидании нужно просто поменять локатор на что-то вида

By.xpath("//table[2][text()='RUR']"))

Вопрос немного в другом: table2 - как WebElement.

Как мне кажется решение: wait.until(ExpectedConditions.textToBePresentInElement(table2, "RUR"));

Пропустил этот метод в списке, когда искал в стандартных методах.

Спасибо за участие!




#179437 selenium + java. Ожидание загрузки.

Отправлено автор: Choson 24 мая 2021 - 08:04 в Selenium - Functional Testing

Данные во второй таблице такие же как и в первой. Поэтому не получится поменять просто текст ожидания для решения данной задачи.

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

 

Скорее всего, можно. А в чем собственно проблема? Почему не использовать тот же подход для второй таблицы, возможно изменив условие?




#179420 selenium + java. Ожидание загрузки.

Отправлено автор: Choson 21 мая 2021 - 12:57 в Selenium - Functional Testing

На странице имеется 2 таблицы и кнопка "Фильтр". Первая таблица с данными. Вторая таблица - получает данные (фильтрованные) из первой при нажатии на кнопку "Фильтр".

При открытии страницы, я ожидаю появления данных в первой таблице (текст "RUR" - есть в ожидаемых данных).

wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[text()='RUR']")));

 

Нажимаю на кнопку "Фильтр" и должен дождаться загрузки данных во вторую таблицу. Можно ли это реализовать стандартным методом selenium? или только свой писать?

 

 




#178602 webdriver + Java. Ошибка при загрузке плагина CryptoPro

Отправлено автор: Choson 14 января 2021 - 08:23 в Selenium - Functional Testing

Java 8, selenium 3.141.59, firefox 83 (64-битный), geckodriver-v0.28.0-win64.

Профиль в firefox установлен дефолтный.

Проблема в том, что не подгружается плагин CryptoPro при запуске firefox. Драйвер в приложении отрабатывает как нужно, кроме тех мест где нужен плагин.

Сообщения при запуске:

[GFX1]: Potential driver version mismatch ignored due to missing DLLs igd10umd64 v= and igd10iumd64 v=

[GFX1]: Potential driver version mismatch ignored due to missing DLLs igd10umd64 v= and igd10iumd64 v=

[GFX1]: Potential driver version mismatch ignored due to missing DLLs igd10umd64 v= and igd10iumd64 v=

console.error: Region.jsm: "Error fetching region" (new TypeError("NetworkError when attempting to fetch resource.", ""))

console.error: Region.jsm: "Failed to fetch region" (new Error("NO_RESULT", "resource://gre/modules/Region.jsm", 376))

[GFX1]: Potential driver version mismatch ignored due to missing DLLs igd10umd64 v= and igd10iumd64 v=

1610451755240                 Marionette        INFO     Listening on port 52253

[GFX1]: Potential driver version mismatch ignored due to missing DLLs igd10umd64 v= and igd10iumd64 v=

1610451755731                 Marionette        WARN  TLS certificate errors will be ignored for this session

янв 12, 2021 2:42:35 PM org.openqa.selenium.remote.ProtocolHandshake createSession

INFO: Detected dialect: W3C

JavaScript warning: https://xxxxxxxxxxxx...ts/cryptopro.js, line 224: unreachable code after return statement

JavaScript warning: https://xxxxxxxxxxxx:9447/refinance/, line 225: unreachable code after return statement

JavaScript warning: https://xxxxxxxxxxxx/refinance/, line 103: unreachable code after return statement

JavaScript warning: https://xxxxxxxxxxxx/refinance/ line 1 > injectedScript, line 103: unreachable code after return statement

JavaScript warning: https://xxxxxxxxxxxx/refinance/ line 1 > injectedScript, line 225: unreachable code after return statement

 

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

Может кто сталкивался с данной проблемой?

 




#178495 selenium + java или python. общий ближайший предок у двух элементов

Отправлено автор: Choson 24 декабря 2020 - 16:14 в Selenium - Functional Testing

 

Лучше всего это сделать не путём построения XPath, а использовать executeScript, чтобы выполнить кусочек кода, который ищет общий родительский элемент:

var element1 = driver.findElement(By.cssSelector("li.category-1"));
var element2 = driver.findElement(By.cssSelector("div#box-latest-products li.product"));
var findCommonAncestor = """
  function ancestors (node) { let n = node; const l = [];
  while (n && n.ownerDocument) { l.unshift(n); n = n.parentNode } return l };
  let l1 = ancestors(arguments[0]); let l2 = ancestors(arguments[1]);
  let result;
  for (let i = 0; i < l1.length; i++) { if (l1[i] === l2[i]) { result = l1[i] } else break };
  return result
  """;
var element = (WebElement) driver.executeScript(findCommonAncestor, element1, element2);

 

Почему лучше? у меня код получился раза в 2 больше, но там и поиск идет в листе листов элементов. Вопрос от кодера на java с опытом около 3-х недель.




#178494 selenium + java или python. общий ближайший предок у двух элементов

Отправлено автор: Choson 24 декабря 2020 - 16:06 в Selenium - Functional Testing

Игорь извините мое любопытство а какой use case ? или академичеккий интерес ? 

Одностраничное вэб приложение, из которого открываются около 100 различных форм. Каждая форма как отдельная страница. Привязываться к атрибутам элементов не могу, поэтому привязываюсь к текстам. На каждой форме  нахожу уникальный текст = уникальный элемент, нахожу второй текст (элемент) так, чтобы общий предок был элементом нужной формы. далее остальные элементы формы нахожу внутри формы (тоже стараюсь по тексту). если в нужной форме есть повторяющиеся тексты ("редактировать", "ОК", и т.д.), то каким же образом нахожу блок в нужным текстом и из него уже нахожу нужный элемент с текстом.

Надеюсь понятно изложил.

В предыдущем посте я описал метод немного по другому.




#178480 selenium + java или python. общий ближайший предок у двух элементов

Отправлено автор: Choson 22 декабря 2020 - 08:51 в Selenium - Functional Testing

Спасибо за ответ, но я проверил как записываются предки элемента в list. Поэтому выбрал такой вариант: 1. нахожу предков у элементов; 2. нахожу общих предков; 3. по любому списку предков ищу максимальный индекс из совпадений со списком общих предков. 2 и 3 пункты можно объединить - 2 вложенных цикла (индексы с концов списков), внутри условие сравнения элементов и выход из обоих циклов по первому совпадению.




#178448 selenium + java или python. общий ближайший предок у двух элементов

Отправлено автор: Choson 16 декабря 2020 - 13:48 в Selenium - Functional Testing

Есть два элемента x и y. надо найти общего ближайшего предка.

Может есть какая функция?

 

Или другой вопрос:

ax = x.findElevmets(By.xpath("ancestor::*") получаю список предков x

ay = y.findElevmets(By.xpath("ancestor::*") получаю список предков y

В этих списках предки в произвольном порядке или в каком-то упорядоченном виде?

 

Спасибо!