-1

下面的代码片段是在 Visual Studio 的普通 UnitTest 项目模板中使用 C# 代码编写的。我通过添加 2 个 NuGet 包添加了 Selenium Web 驱动程序支持 dll:Selenium WebDriver Support 类和 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 行代码之后,如果我们尝试点击加载的网页,警报窗口会出现如下所示的 null 值:

在此处输入图像描述

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

它运行良好。

谁能建议为什么只有relatedTarget在我们期望元素对象存在的地方返回 null ?

4

1 回答 1

0

5Qe,

首先,根据javascripture的文档,relatedTarget 与单击无关,而是与 mouseenter、mouseleave、dragenter 等相关。

接下来,好像是直接在文档上添加了事件,是不行的。如果对单个元素执行相同操作,它将返回适当的元素。

这就是我尝试过的 -

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

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

它正在工作。

于 2015-12-16T05:12:32.623 回答