Справка DoubleClick (c #) по усовершенствованным взаимодействиям с Selenium 2.0 WebDriver - PullRequest
7 голосов
/ 05 декабря 2011

Итак, в рамках моих регрессионных тестов на селен я пытался дважды щелкнуть по календарю, чтобы создать новое приложение.Я попытался использовать doubleClick ();метод в библиотеке продвинутых взаимодействий пользователя, но есть проблема;два щелчка не достаточно быстрые / недостаточно близко друг к другу, чтобы вызвать двойной щелчок!Кто-нибудь нашел способ справиться с этим в своих тестах?

Ответы [ 6 ]

19 голосов
/ 26 декабря 2011

Этот код работает для меня!

Actions action = new Actions(driver);
action.doubleClick(myElemment);
action.perform();
2 голосов
/ 03 декабря 2014

Не забудьте "использовать"

using OpenQA.Selenium;
using OpenQA.Selenium.Interactions;
using OpenQA.Selenium.Interactions.Internal;
using OpenQA.Selenium.Support.UI;

//create Actions object
Actions builder = new Actions(driver);
//create a chain of actions 
builder.DoubleClick().Build().Perform();

http://selenium -interview-questions.blogspot.ru / 2014/03 / как к двойной щелчок-на-веб-element.html

2 голосов
/ 07 декабря 2011

Вот эквивалент Java. Этот код откроет вслепую первое событие. Вы можете добавить логику, чтобы открыть определенное событие и т. Д. Этот код работает! (проверено с 2.12)

List<WebElement> events = driver.findElements(By.cssSelector("div.dv-appointment"));
for(WebElement event:events){
    WebElement body = event.findElement(By.cssSelector("div.body"));            
    if(!body.getText().isEmpty()) //or open a known event
    {
        System.out.println(body.getText()); //open the first event
        Actions builder = new Actions(driver);
        Action doubleClick = builder.doubleClick(event)
                                    .build();
        doubleClick.perform();
        break;                  
    }
}
1 голос
/ 08 февраля 2015

Мне очень нравится используемый здесь подход, в частности, сначала ставить в очередь действия, а затем выполнять, поскольку это позволяет повторять применение цепочки действий.

http://selenium -python.readthedocs.org / ен / последний / api.html # selenium.webdriver.common.action_chains.ActionChains

Из приведенного примера документации:

menu = driver.find_element_by_css_selector(".nav")
hidden_submenu = driver.find_element_by_css_selector(".nav #submenu1")

actions = ActionChains(driver)
actions.move_to_element(menu)
actions.click(hidden_submenu)
actions.perform()
1 голос
/ 23 января 2015

У меня тоже была проблема, когда событие двойного щелчка Selenium работает в Firefox, но не действует в Chrome.Обновление до Selenium не помогло;У меня уже есть последняя версия.(Моя среда - Ubuntu 14.04, Python 2.7.6, Selenium 2.44.0, Firefox 35.0, Chrome 40.0.2214.91.)

Я не уверен, почему ответ CBRRacer был отклонен.Я успешно обошел проблему, используя два события клика.Это работает как в Firefox, так и в Chrome.Есть два способа сделать это, и оба сработали для меня.

Первый способ:

elem = driver.find_element_by_css_selector('#myElement')
elem.click()
elem.click()

Второй способ:

elem = driver.find_element_by_css_selector('#myElement')
actions = webdriver.ActionChains(driver)
actions.click(elem).click(elem).perform()
0 голосов
/ 05 декабря 2011

Вы пытались поймать IWebElement и затем дважды щелкнуть по нему?

IWebElement element = driver.FindElement(By.Id("yourID"));
element.Click();
element.Click();

Я не знаю, даст ли это вам бесполезную функциональность или нет, но я знаю, что когда я выполняю событие click, подобноетот, что выше, работает так же близко, как двойной щелчок от реального пользователя.

Другой вариант - ссылаться на ThoughtWorks.Selenium.Core, однако единственным недостатком этого является то, что я не уверен, что он хорошо работает стекущая IWebDriver Я думаю, что это нуждается в его собственной реализации IWebDriver.

...