Невозможно найти и установить флажок :: перед использованием Selenium Webdriver - PullRequest
0 голосов
/ 18 декабря 2018

Я пытаюсь установить флажок, но он продолжает нажимать на ссылку «Условия использования».Хотя мой xpath (упомянутый ниже) работает с минимизированным окном, он не может установить флажок, когда окно развернуто, потому что href (изображение) появляется во второй строке рядом с флажком.Ищете некоторые предложения по нажатию на флажок виджета в развернутом окне.Мне нужно сфокусироваться на этом.

Интересно, что когда я наведите курсор мыши на :: before (css selector) только тогда, когда виджет будет выделен.

<div class="checkbox u-mar-bot-5">
  <div class="checkbox__container">
    <input class="checkbox__input" type="checkbox" id="basket-contact-terms" required data-parsley-multiple="basket-contact-terms" style>
<label class="checkbox__label checkbox__label--has-link checkbox__label--small" for="basket-contact-terms" style>
::before 
"I have read and agree to " <a class="text-link text-link--base text-link- small" href="/terms-conditions" target="_blank">Terms and Conditions</a>
    </label>
  </div>
</div>

image: Сроки и условия

Я попробовал несколько вариантов, которые не устанавливаются, и вместо этого ссылка «Сроки и условия» получает щелчок,Я, должно быть, упускаю что-то простое.

driver.findElement(By.xpath("//label[@for='basket-contact-terms']")).click();
driver.findElement(By.xpath("//label[contains(@class,'checkbox__label checkbox__label--has-link checkbox__label--small')]")).click();

Я оглянулся и нашел, что кто-то предложил использовать это (ниже), поэтому я попытался, но не сработало:

WebElement elem = driver.findElement(By.xpath("//div[contains(@class,'checkbox u-mar-bot-5')]"));
Actions action = new Actions(driver);
action.moveToElement(elem).click().build().perform();

Любое предложение будет оценено.

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

Поскольку вы пытались идентифицировать INPUT, и он выдавал ошибку, что его не было видно, я сначала попытался бы подождать, чтобы увидеть, станет ли он видимым.(Я предполагаю, что это не будет, но сначала стоит попробовать).

new WebDriverWait(driver, 10).until(ExpectedConditions.elementToBeClickable(By.id("basket-contact-terms"))).click();

Если это не сработает, я бы затем попытался щелкнуть другую позицию на элементе.По умолчанию Selenium щелкает по центру элемента.В вашем случае, я думаю, что это является причиной проблемы.Вы можете использовать Actions, чтобы щелкнуть верхний левый (1,1) элемента.

WebElement label = driver.findElement(By.xpath("//label[@for='basket-contact-terms']"));
new Actions(driver).moveToElement(label, 1, 1).click().perform();
0 голосов
/ 18 декабря 2018

Вы можете попробовать с

WebElement elem = driver.findElement(By.id("basket-contact-terms"))

...