Selenium 2.0 WebDriver Advcanced Interactions DoubleClick帮助(c#)

所以在我的selenium回归测试中,我一直试图双击日历来制作新的appt。 我试图使用doubleClick(); advanceduserinteractions库中的方法,但存在问题; 两次点击不够快/足够接近以实现双击! 有人在他们的测试中找到了解决这个问题的方法吗?

这段代码对我有用!

Actions action = new Actions(driver); action.doubleClick(myElemment); action.perform(); 

这是Java等价物。 此代码将盲目地打开第一个事件。 您可以添加一些逻辑来打开特定事件等。此代码有效! (用2.12测试)

 List 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; } } 

不要忘记“使用”

 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/how-to-double-click-on-web-element.html

我也有问题,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() 

我非常喜欢这里使用的方法,特别是首先排队行动,然后执行,因为这样可以重复应用动作链。

http://selenium-python.readthedocs.org/en/latest/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() 

你试过捕捉IWebElement然后再点击两次吗?

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

我不知道这是否会给你带来非常好的function,但我知道当我执行上面的那个点击事件时,它会像实际用户的双击一样运行。

另一个选择是引用ThoughtWorks.Selenium.Core ,但是唯一的缺点是我不确定它与当前的IWebDriver我认为它需要它自己的IWebDriver实例化。