Как получить innerHTML измененное уведомление о событии, используя EventFiringWebDriver - PullRequest
1 голос
/ 06 июля 2019

У меня есть тестовая html-страница, которая изменяет innerHTML элемента div.мне не удалось использовать selenium.webdriver.support.abstract_event_listener.after_change_value_of (см. https://seleniumhq.github.io/selenium/docs/api/py/webdriver_support/selenium.webdriver.support.event_firing_webdriver.html#module-selenium.webdriver.support.event_firing_webdriver) для получения уведомлений о событиях при изменении innerHTML. Я хотел бы знать, где происходит ошибка и каков правильный механизм для указаниятаких событий.

Я написал небольшую тестовую программу на python, которая использует селеновый веб-драйвер и chromedriver. События before_navigate_to и after_navigate_to запускаются, но after_change_value_of не запускается.

#....
#....
def dump_msg(msg):
    print("[%d] %s" % (current_milli_time(), msg))
#....
#....
class MyListener(AbstractEventListener):
    def before_navigate_to(self, url, driver):
        dump_msg("Before navigate to %s" % url)
    def after_navigate_to(self, url, driver):
        dump_msg("After navigate to %s" % url)
    def after_change_value_of(self, element, driver):
        #+---------------------------+
        #| why isnt this working ??? |
        #+---------------------------+
        dump_msg("After change value of %s" % type(element))
#....
#....
driver = webdriver.Chrome("/usr/bin/chromedriver",chrome_options=chrome_options)
ef_driver = EventFiringWebDriver(driver, MyListener())
ef_driver.get("file:///test/test_change.html")
#....
#....

test_change.html выглядит следующим образом

<!DOCTYPE html>
<html>
    <head>
        <style>
            .boxed1 {
                background-color: yellow;
                opacity:0.4;
            } 
        </style>
    </head>

    <body>
        <div id="foo" class="boxed1"> </div>
        <script>
            document.getElementById("foo").innerHTML = Date();
            setInterval(function() { 
                curr_date_time = Date();
                document.getElementById("foo").innerHTML = curr_date_time;
                //console.log("updated date_time to " + curr_date_time);
                }, 1000);
        </script>
    </body>
</html> 

при запуске программы...[1562418297938] Перед тем как перейти к файлу: ///test/test_change.html[1562418298269] После перехода к файлу: ///test/test_change.html...

Я ожидаю увидеть «После изменения значения ...», но его там нет

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