如何使用EventFiringWebDriver获取innerHTML更改的事件通知

时间:2019-07-06 13:28:27

标签: selenium-webdriver

我有一个测试html页面,该页面更改了div元素的innerHTML。 当innerHTML更改时,我无法使用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)来获取事件通知。我想知道我要去哪里错了,是什么能暗示这种事件的正确机制。

我已经用python编写了一个小型测试程序,该程序使用了硒webdriver和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]导航到file:///test/test_change.html
之前 [1562418298269]导航到file:///test/test_change.html
之后 ...

我希望看到“ ...的更改值之后”,但不存在

0 个答案:

没有答案