2015-12-14 71 views
-1

下面的代碼片段是使用C#代碼在Visual Studio的正常UnitTest項目模板中編寫的。我通過添加2個NuGet包添加了Selenium Web驅動程序支持dll:Selenium WebDriver支持類和Selenium WebDriver。然後輸入下面的代碼 - 在Test方法中,測試在調試模式下運行。addEventListener處理函數不返回鼠標單擊事件的事件對象的所有屬性

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); 

的代碼excuted在調試模式和上述4行代碼後,如果我們試圖點擊加載網頁上的警告窗口,空值出現如下圖所示:

enter image description here

當代碼報警內容更改爲顯示從這裏描述的屬性列表event.clientX或任何這種性質 - http://www.javascripture.com/MouseEvent

它運作良好。

任何人都可以提出爲什麼只有relatedTarget返回null我們期望元素對象存在?

回答

0

5Qe,

首先,按照文件從javascripture,relatedTarget是不相關的點擊,但爲的mouseenter,鼠標離開,等的dragenter

接下來,似乎是直接添加在文檔事件,它不工作。如果在單個元素上完成相同的操作,它將返回適當的元素。

這是我嘗試 -

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

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

,它是工作。

+0

MouseEvent對象還暴露了srcElement(Element對象),它將給出事件源的源元素。對於諸如點擊等直接事件,relatedTarget將爲空。因此可以依賴srcElement。 – 5Qe