щелчок «вход» в селене python

<input class="jss1805" name="confirmWeight" tabindex="0" type="checkbox" data-indeterminate="false" value="">

Код ^ взят с веб-сайта html, и это флажок, который я хочу щелкнуть. За исключением того, что это вход, а не кнопка или тд. Могу ли я щелкнуть по этому, поскольку, когда я запускаю селен, он, кажется, не находит его.

WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "/html/body/div[1]/div[2]/main/form/div/div[2]/div[4]/div[2]/div/div/div[2]/div/div[1]/div/div/label/span[1]/span/input"))).click()

Это находит элемент, но не щелкает его.


person sebtheoo    schedule 03.04.2021    source источник
comment
Взгляните сюда stackoverflow.com/questions/ 21213417/   -  person BuddyBob    schedule 04.04.2021


Ответы (1)


Попробуйте следующее:

from selenium.webdriver.support.wait import WebDriverWait

wait = WebDriverWait(driver, 20)
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[name=confirmWeight]")))

element = driver.find_element_by_css_selector("input[name=confirmWeight]")
element.click()

Объяснение:

  1. Сначала вам нужно дождаться, пока ваш элемент станет кликабельным. Для этого вы должны определить уникальный локатор.
  2. Найдите элемент и нажмите на него

Если вы хотите сделать ввод, используйте:

element.send_keys("`your input")

Если вы хотите нажать на svg, это детское использование: input[name=confirmWeight]>svg Я не вижу его в вашем html. Похоже, предоставленной вами информации недостаточно.

person vitaliis    schedule 04.04.2021
comment
Пожалуйста, примите и проголосуйте, если ответ полезен. - person vitaliis; 04.04.2021
comment
Кажется, это не работает для меня. То, что я пытаюсь нажать, это не кнопка, а ввод. - person sebtheoo; 04.04.2021
comment
Вы пытаетесь ввести текст в свое поле? - person vitaliis; 04.04.2021
comment
Нет, на странице она кликабельна моей мышкой. Когда я использую проверку и наведение курсора на него, вводится «класс», а svg. Там нет кнопки ‹button› или ‹td›. Очень смущенный. - person sebtheoo; 04.04.2021
comment
Вы пробовали мой селектор? - person vitaliis; 04.04.2021
comment
Вы можете использовать .jss1805 в качестве селектора CSS, но я подозреваю, что он динамический. - person vitaliis; 04.04.2021
comment
/html/body/div[1]/div/main/form/div/div[2]/div[4]/div[2]/div/div/div[1]/div/div[1]/div /div/label/span[1]/span/input Первый флажок^ /html/body/div[1]/div/main/form/div/div[2]/div[4]/div[2]/div /div/div[2]/div/div[1]/div/div/label/span[1]/span/input Второй флажок^ - person sebtheoo; 04.04.2021
comment
‹input class=jss1805 name=confirmWeight tabindex=0 type=checkbox data-indeterminate=false value=› 1st element^ ‹input class=jss1805 name=confirmTerms tabindex=0 type=checkbox data-indeterminate=false value=› 2nd^ element - person sebtheoo; 04.04.2021
comment
Пожалуйста, обновите свой вопрос. Я не понимаю, в чем проблема из ваших комментариев. - person vitaliis; 04.04.2021
comment
Я пытаюсь использовать .click(), чтобы щелкнуть поле. Коробка помечена как вход. Я пытаюсь щелкнуть поле с помощью .click() и использовать полный xpath, но он не щелкает его. Он может найти его с помощью xpath, но не щелкает по нему. - person sebtheoo; 04.04.2021
comment
Посмотрите здесь, как дождаться, когда элемент станет доступным для клика /вопросы/66926485/ - person vitaliis; 04.04.2021
comment
Также это включено в мой ответ вам - person vitaliis; 04.04.2021
comment
дождитесь загрузки страницы - person vitaliis; 04.04.2021
comment
мой код использует ожидание, пока он не станет интерактивным модулем - person sebtheoo; 05.04.2021