щракване върху „вход“ в python selenium

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

Кодът^ е от html уебсайт и това е квадратче за отметка, върху което искам да щракна. Освен че е вход, а не бутон или td. Мога ли да щракна върху това, тъй като когато стартирам селен, изглежда не го намирам.

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
Не, на страницата може да се кликне с мишката. Когато използвам проверка и задържа курсора на мишката над него, ‹class› се въвежда и svg. Няма ‹бутон› или ‹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^ елемент - person sebtheoo; 04.04.2021
comment
Моля, актуализирайте въпроса си. Не разбирам къде е проблема от вашите коментари. - person vitaliis; 04.04.2021
comment
Опитвам се да използвам .click(), за да щракна върху кутия. Кутията е обозначена като вход. Опитвам се да щракна върху полето с .click() и да използвам пълния xpath, но не го щраква. Той може да го намери с помощта на xpath, но не щраква върху него. - person sebtheoo; 04.04.2021
comment
Вижте тук как да изчакате даден елемент да стане кликваем stackoverflow.com /questions/66926485/ - person vitaliis; 04.04.2021
comment
Също така е включено в отговора ми до вас - person vitaliis; 04.04.2021
comment
изчакайте страницата да се зареди - person vitaliis; 04.04.2021
comment
моят код използва изчакването да стане модул с възможност за кликване - person sebtheoo; 05.04.2021