Здравствуйте. Подскажите, пожалуйста, как можно решить данную проблему.
Я пытаюсь заполнить форму с выпадающими списками выбрав значения.
В качестве селектора поиска я хочу применить именно локатор, который ищет по тексту. Это тот самый локатор.
this.itemXpath = ‘//md-option/div[contains(text(), “Regular”)]’;
Cайт - https://cloud.google.com/products/calculator
Сначала я вошла во фреймы, их два, тут точно проблема не в этом так как элементы внутри видны и с ними можно взаимодействовать. Ожидания тоже ставила, все равно не работает. Далее я нашла форму. Затем поле выпадающего списка селект. Затем сам список элементов и элемент.
let formComputeEngine = await this.driver.wait(
until.elementLocated(By.xpath(this.formComputeEngineXpath)),
20000
);
let select = await formComputeEngine.findElement(By.xpath(selectXpath));
let selectList = await formComputeEngine.findElement(
By.xpath(selectListXpath)
);
let selectItem = await selectList.findElement(
By.xpath(selectItemXpath)
);
await selectItem.click();
Далее я пытаюсь кликнуть по элементу. Если на всей странице это единственный элемент то клик удается и все ок. Если же встречается на странице такой же элемент(а он встречается но за пределеми формы formComputeEngine, а ищу я в форме все эти элементы и непонятно почему туда могут попасть элементы из другой формы). Например я хочу выбрать в Machine Class - “Regular” и использую xpath который выше. Если элемент с таким же xpath по тексту присутствует на странице(а он есть ниже но в другой форме), то клик не работает, а если попробовать заставить кликнуть с помощью executeJavascript то другой элемент перехватывает клик(тот самый элемент, который ниже, уже в другой форме). Эта ситуация просто завела меня в тупик. Если задать xpath не по тексту, то оно срабатывает, я так понимаю что тут проблема именно тогда возникает когда встречается несколько элементов, которые подходят по xpath. Я понимаю, что я могу просто заменить локатор не используя текст, но мне очень важно разобраться в причинах.
Я хочу кликнуть на то что на скриншоте 1, и меня переносит браузер на то что на скриншоте 2