Skip to content

Commit e29d8e1

Browse files
Merge pull request #29 from aquality-automation/support/update-library-versions
[Selenium 4][Appium] Update libraries versions to resolve the conflict
2 parents f3a4123 + 24e7039 commit e29d8e1

File tree

10 files changed

+140
-38
lines changed

10 files changed

+140
-38
lines changed

README.md

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,18 @@ We use interfaces where is possible, so you can implement your own version of ta
1717

1818
### Quick start
1919

20-
1. To start work with this package, simply add the dependency to your pom.xml:
20+
To start the project using Aquality.Selenium framework, you can [download our template BDD project by this link.](https://github.com/aquality-automation/aquality-appium-mobile-java-template)
21+
22+
Alternatively, you can follow the steps below:
23+
24+
1. Add the dependency to your pom.xml:
2125
```
2226
<dependency>
2327
<groupId>com.github.aquality-automation</groupId>
2428
<artifactId>aquality-appium-mobile</artifactId>
25-
<version>3.0.0-beta</version>
26-
</dependency>
27-
<dependency>
28-
<groupId>org.seleniumhq.selenium</groupId>
29-
<artifactId>selenium-java</artifactId>
30-
<version>4.1.0</version>
29+
<version>3.0.x</version>
3130
</dependency>
3231
```
33-
Note: adding selenium dependency is a temporary solution to avoid version conflict caused by some appium dependencies; to be fixed on the release version.
3432

3533
2. Configure the path to your application at settings.json:
3634
- Copy [settings.json](./src/main/resources/settings.json) into the resources directory of your project.
@@ -78,10 +76,10 @@ package samples.android.apidemos.screens;
7876
import aquality.appium.mobile.elements.interfaces.IButton;
7977
import aquality.appium.mobile.elements.interfaces.ILabel;
8078
import aquality.appium.mobile.elements.interfaces.ITextBox;
81-
import aquality.appium.mobile.screens.AndroidScreen;
79+
import aquality.appium.mobile.screens.Screen;
8280
import org.openqa.selenium.By;
8381
84-
public class InvokeSearchScreen extends AndroidScreen {
82+
public class InvokeSearchScreen extends Screen {
8583
8684
private final ITextBox txbSearch = getElementFactory().getTextBox(By.id("txt_query_prefill"), "Search");
8785
private final IButton btnStartSearch = getElementFactory().getButton(By.id("btn_start_search"), "Start search");
@@ -203,8 +201,6 @@ public class DemoTest {
203201
}
204202
```
205203
206-
You can find an example in [aquality-appium-mobile-java-template](https://github.com/aquality-automation/aquality-appium-mobile-java-template) repository.
207-
208204
### Devices
209205
210206
Our library allows you to run tests on different devices and store their settings (like udid, name, etc.) in JSON files.

pom.xml

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -172,19 +172,13 @@
172172
<dependency>
173173
<groupId>com.github.aquality-automation</groupId>
174174
<artifactId>aquality-selenium-core</artifactId>
175-
<version>2.0.2</version>
175+
<version>2.0.4</version>
176176
</dependency>
177177

178178
<dependency>
179179
<groupId>io.appium</groupId>
180180
<artifactId>java-client</artifactId>
181-
<version>8.0.0-beta2</version>
182-
</dependency>
183-
<!-- todo: remove the dependency below after the conflict is resolved-->
184-
<dependency>
185-
<groupId>org.seleniumhq.selenium</groupId>
186-
<artifactId>selenium-java</artifactId>
187-
<version>4.1.0</version>
181+
<version>8.2.0</version>
188182
</dependency>
189183

190184
<dependency>

src/main/java/aquality/appium/mobile/elements/CheckBox.java

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,15 +27,9 @@ public void uncheck() {
2727
setState(false);
2828
}
2929

30-
@Override
31-
public boolean isChecked() {
32-
logElementAction("loc.checkbox.get.state");
33-
return super.isChecked();
34-
}
35-
3630
@Override
3731
public void toggle() {
38-
setState(!super.isChecked());
32+
setState(!getState());
3933
}
4034

4135
/**
@@ -45,7 +39,7 @@ public void toggle() {
4539
*/
4640
private void setState(boolean state) {
4741
logElementAction("loc.setting.value", state);
48-
if (state != super.isChecked()) {
42+
if (state != getState()) {
4943
click();
5044
}
5145
}

src/main/java/aquality/appium/mobile/elements/CheckableElement.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,14 @@ protected CheckableElement(By loc, String nameOf, ElementState stateOf) {
1616
}
1717

1818
public boolean isChecked() {
19+
logElementAction("loc.checkable.is.checked");
20+
boolean state = getState();
21+
logElementAction("loc.checkable.state", state);
22+
return state;
23+
}
24+
25+
protected boolean getState()
26+
{
1927
return doWithRetry(() -> {
2028
String checked = getElement().getAttribute(Attributes.CHECKED.toString());
2129
if (checked == null || checked.equals("")) {

src/main/java/aquality/appium/mobile/elements/ComboBox.java

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -95,32 +95,44 @@ public void clickAndSelectByValue(String value) {
9595

9696
@Override
9797
public String getSelectedValue() {
98-
return doWithRetry(
98+
logElementAction("loc.combobox.getting.selected.text");
99+
String text = doWithRetry(
99100
() -> new Select(getElement()).getFirstSelectedOption().getAttribute(Attributes.VALUE.toString()));
101+
logElementAction("loc.combobox.selected.text", text);
102+
return text;
100103
}
101104

102105
@Override
103106
public String getSelectedText() {
104-
return doWithRetry(() -> new Select(getElement()).getFirstSelectedOption().getText());
107+
logElementAction("loc.combobox.getting.selected.value");
108+
String value = doWithRetry(() -> new Select(getElement()).getFirstSelectedOption().getText());
109+
logElementAction("loc.combobox.selected.value", value);
110+
return value;
105111
}
106112

107113
@Override
108114
public List<String> getValues() {
109115
logElementAction("loc.combobox.get.values");
110-
return doWithRetry(() ->
116+
List<String> values = doWithRetry(() ->
111117
new Select(getElement()).getOptions()
112118
.stream()
113119
.map(option -> option.getAttribute(Attributes.VALUE.toString()))
114120
.collect(Collectors.toList()));
121+
logElementAction("loc.combobox.values",
122+
values.stream().map(value -> String.format("'%s'", value)).collect(Collectors.joining(", ")));
123+
return values;
115124
}
116125

117126
@Override
118127
public List<String> getTexts() {
119128
logElementAction("loc.combobox.get.texts");
120-
return doWithRetry(() ->
129+
List<String> values = doWithRetry(() ->
121130
new Select(getElement()).getOptions()
122131
.stream()
123132
.map(WebElement::getText)
124133
.collect(Collectors.toList()));
134+
logElementAction("loc.combobox.texts",
135+
values.stream().map(value -> String.format("'%s'", value)).collect(Collectors.joining(", ")));
136+
return values;
125137
}
126138
}

src/main/resources/localization/be.json

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,21 @@
77
"loc.application.android.activity.start": "Стартуем '%1$s' актыўнасць Android праграмы ў пакеце '%2$s'",
88
"loc.button": "Кнопка",
99
"loc.checkbox": "Чэкбокс",
10-
"loc.checkbox.get.state": "Атрымліваем стан",
10+
"loc.checkable.is.checked": "Атрымліваем стан",
11+
"loc.checkable.state": "Стан: [%s]",
1112
"loc.combobox": "Камбабокс",
13+
"loc.combobox.getting.selected.text": "Атрымліваем выбраны тэкст",
14+
"loc.combobox.getting.selected.value": "Атрымліваем выбранае значэнне",
15+
"loc.combobox.selected.text": "Выбраны тэкст: [%s]",
16+
"loc.combobox.selected.value": "Выбранае значэнне: [%s]",
1217
"loc.combobox.select.by.text" : "Выбіраем значэнне з тэкстам '%s'",
1318
"loc.combobox.select.by.value" : "Выбіраем значэнне '%s'",
1419
"loc.combobox.get.texts": "Атрымліваем спіс тэкстаў опцыяў",
1520
"loc.combobox.get.values" : "Атрымліваем спіс значэнняў",
21+
"loc.combobox.texts": "Спіс тэкстаў опцыяў: [%s]",
22+
"loc.combobox.values": "Спіс значэнняў: [%s]",
1623
"loc.combobox.impossible.to.select.contain.value.or.text" : "Немагчыма выбраць опцыю, якая змяшчае значэнне/тэкст '%1$s' у камбабоксе '%2$s'",
1724
"loc.file.reading_exception" : "Памылка пры чытанні файла: '%s'",
18-
"loc.focusing" : "Факусуемся",
1925
"loc.label" : "Надпіс",
2026
"loc.link" : "Спасылка",
2127
"loc.radio" : "Радыёкнопка",

src/main/resources/localization/en.json

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,21 @@
77
"loc.application.android.activity.start": "Starting the '%1$s' activity of the Android app at package '%2$s'",
88
"loc.button": "Button",
99
"loc.checkbox": "CheckBox",
10-
"loc.checkbox.get.state": "Getting state",
10+
"loc.checkable.is.checked": "Getting state",
11+
"loc.checkable.state": "State: [%s]",
1112
"loc.combobox": "ComboBox",
13+
"loc.combobox.getting.selected.text": "Getting selected text",
14+
"loc.combobox.getting.selected.value": "Getting selected value",
15+
"loc.combobox.selected.text": "Selected text: [%s]",
16+
"loc.combobox.selected.value": "Selected value: [%s]",
1217
"loc.combobox.select.by.text": "Selecting value by text '%s'",
1318
"loc.combobox.select.by.value": "Selecting value '%s'",
1419
"loc.combobox.get.texts": "Getting option texts array",
1520
"loc.combobox.get.values": "Getting values array",
21+
"loc.combobox.texts": "Option texts: [%s]",
22+
"loc.combobox.values": "Option values: [%s]",
1623
"loc.combobox.impossible.to.select.contain.value.or.text": "It is impossible to select option that contains value/text '%1$s' from combobox '%2$s'",
1724
"loc.file.reading_exception": "Exception while reading file: '%s'",
18-
"loc.focusing": "Focusing",
1925
"loc.label": "Label",
2026
"loc.link": "Link",
2127
"loc.radio": "Radiobutton",
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
{
2+
"loc.application.quit": "Zamykanie aplikacji",
3+
"loc.application.driver.remote": "Ustawianie sterownika aplikacji przy użyciu serwera na adresie '%s'",
4+
"loc.platform.name.wrong": "Platforma '%s' nie jest obsługiwana.",
5+
"loc.application.ready": "Aplikacja na platformie '%1$s' jest gotowa...",
6+
"loc.application.implicit.timeout": "Ustawianie implicit(niejawnego) limitu czasu '%1$s' sek.",
7+
"loc.application.android.activity.start": "Rozpoczęcie aktywności '%1$s' aplikacji Android w pakiecie '%2$s'",
8+
"loc.button": "Przycisk",
9+
"loc.checkbox": "Pole wyboru",
10+
"loc.checkable.is.checked": "Uzyskiwanie stanu",
11+
"loc.checkable.state": "Stan: [%s]",
12+
"loc.combobox": "Pole kombi",
13+
"loc.combobox.getting.selected.text": "Pobieranie zaznaczonego tekstu",
14+
"loc.combobox.getting.selected.value": "Pobieranie wybranej wartości",
15+
"loc.combobox.selected.text": "Wybrany tekst: [%s]",
16+
"loc.combobox.selected.value": "Wybrana wartość: [%s]",
17+
"loc.combobox.select.by.text": "Wybieranie wartości z tekstem '%s'",
18+
"loc.combobox.select.by.value": "Wybieranie wartośc '%s'",
19+
"loc.combobox.get.texts": "Pobieranie listy tekstów opcji",
20+
"loc.combobox.get.values": "Pobieranie listy wartości",
21+
"loc.combobox.texts": "Lista tekstów opcji: [%s]",
22+
"loc.combobox.values": "Lista wartości: [%s]",
23+
"loc.combobox.impossible.to.select.contain.value.or.text": "Wybieranie wartości ze znaczeniem/tekstem '%1$s' w polu kombi '%2$s' nie jest możliwe",
24+
"loc.file.reading_exception": "Błąd podczas odczytu pliku: '%s'",
25+
"loc.label": "Etykieta",
26+
"loc.link": "Link",
27+
"loc.radio": "Przycisk radiowy",
28+
"loc.send.text": "Ustawianie tekstu - '%s'",
29+
"loc.setting.value": "Ustawianie wartości '%s'",
30+
"loc.text.clearing": "Czyszczenie",
31+
"loc.text.field": "Pole tekstowe",
32+
"loc.text.typing": "Wpisywanie '%s'",
33+
"loc.text.focusing": "Skupienie się na polu",
34+
"loc.text.unfocusing": "Usunięcie fokusu z pola",
35+
"loc.text.masked_value": "********",
36+
"loc.action.swipe": "Przesuwanie od współrzędnych (x:%1$s; y:%2$s) do (x:%3$s; y:%4$s)",
37+
"loc.action.swipeLongPress": "Przesuwanie przy użyciu długiego naciśnięcia od współrzędnych (x:%1$s; y:%2$s) do (x:%3$s; y:%4$s)",
38+
"loc.get.center": "Uzyskanie współrzędnych środka elementu",
39+
"loc.center.value": "Współrzędne środka elementu: (x:%1$s; y:%2$s)"
40+
}

src/main/resources/localization/ru.json

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,21 @@
77
"loc.application.android.activity.start": "Стартуем '%1$s' активность Android приложения в пакете '%2$s'",
88
"loc.button": "Кнопка",
99
"loc.checkbox": "Чекбокс",
10-
"loc.checkbox.get.state": "Получение состояния",
10+
"loc.checkable.is.checked": "Получение состояния",
11+
"loc.checkable.state": "Состояние: [%s]",
1112
"loc.combobox": "Комбобокс",
13+
"loc.combobox.getting.selected.text": "Получаем выбранный текст",
14+
"loc.combobox.getting.selected.value": "Получаем выбранное значение",
15+
"loc.combobox.selected.text": "Выбранный текст: [%s]",
16+
"loc.combobox.selected.value": "Выбранное значение: [%s]",
1217
"loc.combobox.select.by.text": "Выбор значения с текстом '%s'",
1318
"loc.combobox.select.by.value": "Выбор значения '%s'",
1419
"loc.combobox.get.texts": "Получение списка текстов опций",
1520
"loc.combobox.get.values": "Получение списка значений",
21+
"loc.combobox.texts": "Список текстов опций: [%s]",
22+
"loc.combobox.values": "Список значений: [%s]",
1623
"loc.combobox.impossible.to.select.contain.value.or.text": "Не удаётся выбрать значение которое содержит значение/текст '%1$s' в выпадающем списке '%2$s'",
1724
"loc.file.reading_exception": "Исключение при чтении файла: '%s'%n",
18-
"loc.focusing": "Взятие элемента в фокус",
1925
"loc.label": "Надпись",
2026
"loc.link": "Ссылка",
2127
"loc.radio": "Радиокнопка",
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
{
2+
"loc.application.quit": "Закриття програми",
3+
"loc.application.driver.remote": "Налаштування драйвера програми за допомогою сервера за адресою '%s'",
4+
"loc.platform.name.wrong": "Платформа '%s' не підтримується.",
5+
"loc.application.ready": "Програма на платформі '%1$s' готова...",
6+
"loc.application.implicit.timeout": "Встановлення implicit(неявного) часу очікування: '%1$s' сек.",
7+
"loc.application.android.activity.start": "Запуск активності '%1$s' програми Android у пакеті '%2$s'",
8+
"loc.button": "Кнопка",
9+
"loc.checkbox": "Чекбокс",
10+
"loc.checkable.is.checked": "Отримання стану",
11+
"loc.checkable.state": "Стан: [%s]",
12+
"loc.combobox": "Комбобокс",
13+
"loc.combobox.getting.selected.text": "Отримання вибраного тексту",
14+
"loc.combobox.getting.selected.value": "Отримання вибраного значення",
15+
"loc.combobox.selected.text": "Вибраний текст: [%s]",
16+
"loc.combobox.selected.value": "Вибране значення: [%s]",
17+
"loc.combobox.select.by.text" : "Вибір значення за текстом '%s'",
18+
"loc.combobox.select.by.value" : "Вибір значення '%s'",
19+
"loc.combobox.get.texts": "Отримання масиву текстів опцій",
20+
"loc.combobox.get.values" : "Отримання масиву значень",
21+
"loc.combobox.texts": "Список текстів опцій: [%s]",
22+
"loc.combobox.values": "Список значень: [%s]",
23+
"loc.combobox.impossible.to.select.contain.value.or.text" : "Не вдалося вибрати опцію, що містіть значення/текст '%1$s' у комбобоксі '%2$s'",
24+
"loc.file.reading_exception" : "Помилка підчас читання файлу: '%s'",
25+
"loc.label" : "Напис",
26+
"loc.link" : "Посилання",
27+
"loc.radio" : "Радіокнопка",
28+
"loc.send.text" : "Встановлення тексту - '%s'",
29+
"loc.setting.value" : "Встановлення значення '%s'",
30+
"loc.text.clearing" : "Очищення",
31+
"loc.text.field" : "Текстове поле",
32+
"loc.text.typing" : "Введення '%s'",
33+
"loc.text.focusing": "Фокусування на полі",
34+
"loc.text.unfocusing": "Зняття фокусування з поля",
35+
"loc.text.masked_value": "********",
36+
"loc.action.swipe": "Проводимо по екрану від координат (x:%1$s; y:%2$s) до (x:%3$s; y:%4$s)",
37+
"loc.action.swipeLongPress": "Проводимо по екрану за допомогою тривалого натискання від координат (x:%1$s; y:%2$s) до (x:%3$s; y:%4$s)",
38+
"loc.get.center": "Отримання координат центру елемента",
39+
"loc.center.value": "Координати центру елемента: (x:%1$s; y:%2$s)"
40+
}

0 commit comments

Comments
 (0)