下面的代码片段是使用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行代码之后警报窗口出现空值,如下所示:
当代码中的提醒内容更改为显示event.clientX
或此处所述属性列表中的任何此类属性时,http://www.javascripture.com/MouseEvent
运作良好。
有人可以建议为什么只有relatedTarget
返回null,我们期望元素对象出现在哪里?
答案 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);
它正在发挥作用。