Как нажать на флажок Selenium

#c# #selenium #checkbox

#c# #селен #флажок

Вопрос:

Моя цель — установить флажок на веб-сайте. HTML:

 <label class="checkbox" for="are_terms_agreed">
<input name="terms" id="are_terms_agreed" class="checkbox__input required-entry validate-checkbox" value="1" type="checkbox">
<span class="checkbox__span">
<i class="checkbox__icon"></i>
</span>
<span class="checkbox__title">
I have read and agree to the 
<span class="signup__label-terms">
<a onclick="return false;" href="https://shop.adidas.ae/en/help/terms-conditions.html" class="js-dialog-btn" data-target="js-dialog-terms">
Terms amp;amp; Conditions
</a>
for website use
</span>
</span>
</label>
 

Исходная ссылка: https://shop.adidas.ae/en/checkout/onepage / (возможно, вам придется добавить обувь в корзину и продолжить процесс оформления заказа, чтобы просмотреть страницу, которую я просматриваю)

Я попробовал несколько разных способов добиться этого. Во-первых, я попытался получить доступ к

IWebElement termsandconditions2 = driver.FindElement(By.XPath("//label[@class = 'checkbox']//label[@for = 'are_terms_agreed']"));

Я получаю сообщение об ошибке:

Необработанное исключение типа ‘openQA.Selenium.В WebDriver произошло исключение NoSuchElementException.Дополнительная информация о dll: не удалось найти элемент: {«метод»:»xpath»,»селектор»:»// label[@class = ‘checkbox’] //label[@for = ‘are_terms_agreed’]»}

Я также пробовал:

IWebElement termsandconditions = driver.FindElement(By.CssSelector("span[class*='checkbox__span']"));

Это в основном нажатие на фактический значок «проверить», а не проверка всего поля, как я пробовал раньше. Когда я запускаю это, я получаю сообщение об ошибке:

Необработанное исключение типа ‘openQA.Selenium.Исключение ElementNotVisibleException’ произошло в WebDriver.dll Дополнительная информация: Элемент в данный момент не виден, и поэтому с ним нельзя взаимодействовать

Я пробовал использовать код прокрутки вниз, ничего не происходит.

Любая помощь? Спасибо

Комментарии:

1. У него есть ‘ID’, используйте driver.FindElement(By.Id("are_terms_agreed")).Click();

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

3. Попробуйте драйвер. findElement(By.cssSelector(«#co-terms-form > label: nth-дочерний элемент (2) > span.checkbox__span > i»));

Ответ №1:

В соответствии с координатами щелкните событие. Попробуйте.

 Actions action = new Actions(driver);
action.MoveToElement(driver.FindElement(By.Xpath("//*[@id='co-terms-form']/label[1]/span[1]")), 2, 2).Click().Perform();
 

Или:

 driver.FindElement(By.Xpath("//*[@id='co-terms-form']/label[1]/span[1]").CLick()
 

Комментарии:

1. Привет, Тургут, что мне поместить в [1]? Или мне просто оставить его?

2. просто оставьте это :). количество индексов «[1]». Но все веб-элементы xpath разные.

3. Неважно, проблема полностью решена. Большое тебе спасибо, чувак!

4. добро пожаловать 🙂