Я сделал код python, чтобы найти, щелкнуть и ввести что-либо во все поля ввода type = "text" на странице.
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
browser = webdriver.Chrome()
browser.get("https://getbootstrap.com/docs/4.0/examples/checkout/")
action = ActionChains(browser)
inputs = browser.find_elements_by_tag_name("input")
for currentInput in inputs:
if currentInput.get_attribute("type") == "text":
action.move_to_element(currentInput).move_by_offset(5,5).click().perform()
currentInput.send_keys("this is text thing")
time.sleep(0.2)
assert "No results found." not in browser.page_source
time.sleep(2)
browser.close()
Я ожидаю, что он щелкнет элемент currentInput и наберет. Что происходит на самом деле: он нажимает на каждый предыдущий текстовый элемент ввода, прежде чем перейти к событию send_keys. Например, если он находится на третьем входе, он щелкнет 1-й, 2-й, затем 3-й и, наконец, выполнит следующую строку. Это ошибка или я сделал что-то не так?
РЕДАКТИРОВАТЬ: Я пробовал это на Firefox, и это тоже произошло там. Я пробовал этот же скрипт на разных страницах, и результат тот же, действие click (). Perform () проходит через все предыдущие элементы того же типа, прежде чем достигнет фактического текущего. Это страницы, которые может протестировать и любой другой: https://sites.uwm.edu/mdisc/forum-signup/; https://www.createaforum.com/free-forum.php