Для массивов со значениями без пробелов я использовал простой набор функций для итерации по каждому элементу массива и конкатенации массива:
_arrayToStr(){
array=($@)
arrayString=""
for (( i=0; i<${#array[@]}; i++ )); do
if [[ $i == 0 ]]; then
arrayString="\"${array[i]}\""
else
arrayString="${arrayString} \"${array[i]}\""
fi
done
export arrayString="(${arrayString})"
}
_strToArray(){
str=$1
array=${str//\"/}
array=(${array//[()]/""})
export array=${array[@]}
}
Первая функция с превращением массива в string, добавляя открывающиеся и закрывающиеся круглые скобки и избегая всех двойных кавычек. Вторая функция разделит кавычки и скобки и поместит их в фиктивный массив.
Чтобы экспортировать массив, вы должны передать все элементы исходного массива:
array=(foo bar)
_arrayToStr ${array[@]}
На этом этапе массив был экспортирован в значение $ arrayString. Чтобы импортировать массив в файл назначения, переименуйте массив и выполните противоположное преобразование:
_strToArray "$arrayName"
newArray=(${array[@]})
In such scenarios, here is what you can do
Найдите xpath элемента на разных устройствах Android и объявите их в объектной модели страницы.
@AndroidFindBy(xpath="//<xpath of the element>")
private MobileElement element1;
@AndroidFindBy(xpath="//<xpath of the element>")
private MobileElement element2;
Вы можете написать вспомогательную функцию в классе объектной модели Page, которая сообщит вам, что ли конкретный элемент существует или нет на экране.
public boolean elementExist (Xpath xpath) {if (! AppiumDriver.findElements (xpath) .isEmpty ()) {LOGGER.info ("Элемент существует"); вернуть истину; } else {LOGGER.info («Элемент не существует»); вернуть ложь; }}
Затем в тестовом примере вы можете сделать что-то вроде
if(elementExist(element1)) {
click(element1);
} else if (elementExist(element2)) {
click(element2);
}...