addEventListener处理函数不返回鼠标单击事件的事件对象的所有属性

时间:2015-12-14 05:23:28

标签: c# selenium-webdriver chrome-web-driver

下面的代码片段是使用Visual Studio的普通UnitTest项目模板中的C#代码编写的。我通过添加2个NuGet包添加了Selenium Web驱动程序支持dll:Selenium WebDriver支持类和Selenium WebDriver。然后在Test方法中键入以下代码,并在调试模式下运行测试。

    static IWebDriver driver;

    driver = new ChromeDriver(@"C:\Selenium_Drivers"); // location of chromedriver.exe

    driver.Url = "http://juliemr.github.io/protractor-demo/";

    string javascript = "document.addEventListener('click', function(event){alert(event.relatedTarget);});";

    ((IJavaScriptExecutor)driver).ExecuteScript(javascript);

代码在调试模式下执行,如果我们尝试点击加载的网页,则在上面的4行代码之后警报窗口出现空值,如下所示:

enter image description here

当代码中的提醒内容更改为显示event.clientX或此处所述属性列表中的任何此类属性时,http://www.javascripture.com/MouseEvent

运作良好。

有人可以建议为什么只有relatedTarget返回null,我们期望元素对象出现在哪里?

1 个答案:

答案 0 :(得分:0)

5Qe,

首先,根据javascripture的文档,relatedTarget与click无关,但与mouseenter,mouseleave,dragenter等无关。

接下来,似乎事件直接添加到文档中,它不起作用。如果对单个元素执行相同操作,则会返回相应的元素。

这就是我试过的 -

string javascript = "document.getElementById('gobutton').addEventListener('mouseleave', function(event){alert(event.relatedTarget);});";

            ((IJavaScriptExecutor)driver).ExecuteScript(javascript);

它正在发挥作用。