#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. добро пожаловать 🙂