简体   繁体   中英

Mouse clickAndHold() not working properly on Firefox Using Selenium Webdriver

I am using selenium webdriver client 2.39 and Firefox 26.

Mouse click and hold event does not work properly. My code is like

WebDriver driver=new FirefoxDriver();
driver.get("http://startingwithseleniumwebdriver.blogspot.com/2013/12/frmset1.html");
WebElement multiSelectDropDown=driver.findElement(By.name("multiselectdropdown"));
List<WebElement> dropdownlists = multiSelectDropDown.findElements(By.tagName("option"));
Actions builder=new Actions(driver);
builder.clickAndHold(dropdownlists.get(0)).
               clickAndHold(dropdownlists.get(6)).click().build();

This code does not give any error but select only one element. I can bypass this issue using other way but I want to know whay it is not working.

I face the same problem but it select the element from start to last and give some Error like

Cannot perform native interaction: Could not get node for element - cannot interact

I got the solution by this way you can do this for your problem

 builder.clickAndHold(dropdownlists.get(0)).moveToElement(dropdownlists.get(6)).release().build().perform();

If you want to select multiple option from your list try this (it will select first 3 elements):

List<WebElement> elements = driver.findElements(By.xpath("//select[@name='multiselectdropdown']/option"));
for(int i = 0; i < 3; i++) {
    new Actions(driver).keyDown(Keys.CONTROL).click(elements.get(i)).keyUp(Keys.CONTROL).perform();
    }

ButtonUp (or release() ) should be the next button-action following a ButtonDown (or clickAndHold() ) button-action (see Appium notes for ButtonDown documentation). Your code performs two consecutive clickAndHolds() followed by a click() without performing a release() . It should be something like:

   WebDriver driver=new FirefoxDriver();
   driver.get("http://startingwithseleniumwebdriver.blogspot.com/2013/12/frmset1.html");
   WebElement multiSelectDropDown=driver.findElement(By.name("multiselectdropdown"));
   List<WebElement> dropdownlists = multiSelectDropDown.findElements(By.tagName("option"));
   Actions builder=new Actions(driver);
   builder.clickAndHold(dropdownlists.get(0)).moveTo(dropdownlists.get(6)).release().build();

While the linked documentation is not for Selenium, Appium is built on top of Selenium.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM