2010-10-20 4 views
2

Я использую C# с Selenium 2.0/Webdriver, и я пытаюсь имитировать двойной щелчок на строке таблицы, которая открывает новый браузер окно.Selenium 2/Webdriver - как дважды щелкнуть по строке таблицы (что открывает новое окно)

У меня есть две проблемы:

  1. После размещения строки таблицы, которая имеет уникальное имя класса (т.е. с использованием findelement(By.classname("..."))) применения метода мыши (или выберите/отправить) не выполняет никаких действий и жалуется не быть в состоянии выполнить это доброе дело на данный элемент.

  2. Как вы выполнить двойной щелчок в Selenium 2.0/WebDriver?

ответ

7
  1. Вы должны нажать на ячейку таблицы (<td>) элемент

  2. Двойной щелчок еще не реализована в WebDriver. См. Issue #244 для статуса. Также комментарии к этой проблеме содержат JavaScript, который можно использовать для двойного щелчка в Firefox.

Для IE вам нужно будет выполнить следующее:

(IJavaScriptExecutor)driver).executeScript("arguments[0].fireEvent('ondblclick');", cell); 

Для Firefox и Chrome:

(IJavaScriptExecutor)driver).executeScript("var evt = document.createEvent('MouseEvents');" + 
     "evt.initMouseEvent('dblclick',true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0,null);" + 
     "arguments[0].dispatchEvent(evt);", cell); 

где cell является веб-элемент, на котором вы хотели бы выполнить скрипт.

+1

+1 - Все еще отличная альтернатива, когда готовый DoubleClick не делает то, что вы хотите. Работал идеально для меня – JOpuckman

+0

По-прежнему верно в 2017 году - цель двойного щелчка на td была ключом к тому, чтобы заставить меня работать для меня. – Ted

4

Для двойной клик вы можете выполнить следующие действия:

from selenium.webdriver import ActionChains 

action_chains = ActionChains(driver) 
action_chians.double_click(on_element).perform() 

*, где on_element = элемент, на котором вы хотите двойной щелчок *

Я сделал это с помощью питона. и это сработало :)