Selenium Action, щелкнув каждый элемент перед текущим - PullRequest
0 голосов
/ 26 мая 2020

Я сделал код 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...