2012-11-29 34 views
0

我測試的網站上有這樣一個元素:硒:<a>標記與HREF點擊行爲錯誤

<a href="http://t.qq.com/p/t/148892114342486" class="comt" num="1">評論</a> 

有一些JavaScript與標籤和期望的行爲是點擊標籤時,瀏覽器不會去勾搭任何地方,但留在同一頁面,打開評論textarea供用戶輸入。

但是在selenium中,兩個都發生了,textarea被打開,瀏覽器將導航到href指向的頁面,這對我的硒腳本來說並不是期望的結果。

如何避免這種情況?

我正在考慮將href屬性更改爲「#」以避免出現此類問題,但看起來像硒本身無法更改網頁中的元素,這是真的嗎?

我的Python腳本硒:

ask = driver.find_element_by_xpath("//a[@class='comt']") 
ask.click() 
+0

你能給我們一個鏈接嗎? – root

+0

你的javascript是否包含「return false;」聲明在最後?你嘗試過fireEvent函數嗎?有時(對我來說,至少)直接點擊()在某些ajax上失敗 –

+0

http://t.qq.com/yilanyeh –

回答

0

正如上述用戶的評論...因爲JS是一個擁有超鏈接的點擊事件掛鉤。

然後它的建議來觸發JavaScript事件直接,而不是把重點放在了超鏈接的點擊事件..

從你上面的評論的url,我採取了以下元素

<a title="" onmousedown="MI.Bos('btnVaryEntrance1')" onclick="vary('yilanyeh','葉怡蘭');" href="javascript:void(0)"> 

它有一個JS功能變化( 'yilanyeh', '葉怡蘭')鉤住Click事件......所以我的代碼看起來像這樣(C#代碼)

 IWebDriver driver = new InternetExplorerDriver(); 
     driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10)); 
     driver.Navigate().GoToUrl("http://t.qq.com/yilanyeh"); 

     IJavaScriptExecutor jr = (IJavaScriptExecutor)driver; 

     jr.ExecuteScript("vary('yilanyeh','葉怡蘭');");