Selenium 2/Webdriver – как дважды щелкнуть строку таблицы (открывается новое окно)

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

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

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

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


person Ben    schedule 20.10.2010    source источник


Ответы (2)


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

  2. Двойной щелчок еще не реализован в WebDriver. См. ошибку № 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 — это веб-элемент, на котором вы хотите выполнить скрипт.

person Sergii Pozharov    schedule 21.10.2010
comment
+1 - Все еще отличная альтернатива, когда стандартный DoubleClick не делает то, что вы хотите. Работал идеально для меня - person JOpuckman; 27.08.2012
comment
Все еще верно в 2017 году — двойной щелчок по td был ключом к тому, чтобы заставить его работать для меня. - person Ted; 16.06.2017

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

from selenium.webdriver import ActionChains

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

*где, on_element = элемент, по которому вы хотите дважды щелкнуть*

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

person Ajay    schedule 02.04.2012