#reactjs #selenium-webdriver #cucumberjs #blueprintjs
#reactjs #selenium-webdriver #cucumberjs #blueprintjs
Вопрос:
Я провожу тестирование автоматизации с использованием CucumberJS с Selenium Webdriver. Я пытаюсь щелкнуть переключатель в форме, используя этот фрагмент кода :
try {
let gender = driver.findElement(By.css("input[type=radio][value=Miss.]"))
gender.click()
driver.sleep(7000)
} catch (ex) {
console.log(ex)
}
Это мой код реакции с использованием библиотеки Blueprint :
<RadioGroup>
<Radio id="radio-gender-1" label="Mr." value="Mr." checked={this.state.title === "Mr."} />
<Radio id="radio-gender-2" label="Miss." value="Miss." checked={this.state.title === "Miss."} />
</RadioGroup>
Но когда я запускаю тест, он выдает ошибку с указанием:
Предупреждение о необработанном promiserejectionwarning: InvalidSelectorError: недопустимый селектор: был указан недопустимый или нелегальный селектор.
Я могу заполнить текстовые поля в форме, но не могу нажать на переключатель.
Не могли бы вы, пожалуйста, помочь мне с этим?
Ответ №1:
Вы не заключили значения атрибутов в кавычки в вашем CSS-селекторе. Это должно быть
input[type='radio'][value='Miss.']
Но у вас есть идентификатор, поэтому я не уверен, почему вы не используете его вместо
By.id("radio-gender-2")
Комментарии:
1. Я пытался сделать это с помощью By.id () но это выдавало ошибку. После попытки вашего предложения он по-прежнему выдает ошибку » Элемент <идентификатор ввода=»radio-gender-2″ name =»
Blueprint2.RadioGroup-0" type="radio" value="Miss."> is not clickable at p oint (382, 325). Other element would receive the click: <span class="bp3-control-indicator"></span>
»2. Это означает, что существует
SPAN
, указанный в сообщении об ошибке, который блокирует щелчок. Обновите опубликованный вами HTML-код, чтобы включить в него не только теINPUT
файлы, которые у вас уже есть, но и те,SPAN
о которых говорится в сообщении об ошибке. Похоже, вам нужно щелкнуть справаSPAN
.3. Я использую радиокомпонент из библиотеки BlueprintJS. Диапазон виден в режиме отладки, HTML-код — это именно то, что я привел здесь. И я попытался щелкнуть по промежутку, но он не работает.
4. Я не смогу вам помочь, если вы не разместите больше HTML. Добавьте то,
SPAN
на что ссылается ошибка, и включите то,INPUT
на что вы пытаетесь нажать.
Ответ №2:
BlueprintJS, похоже, добавляет наложение на переключатели, чтобы придать им стиль. Это приводит к тому, что Selenium не может правильно щелкнуть переключатель.
Решение, которое я нашел, — щелкнуть фактическое наложение, а не ввод, для этого я использовал этот селектор:
# By.css("#inputId .bp3-control-indicator")