繁体   English   中英

鼠标 clickAndHold() 在 Firefox 使用 Selenium Webdriver 时无法正常工作

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

我正在使用 selenium webdriver 客户端 2.39 和 Firefox 26。

鼠标单击并按住事件无法正常工作。 我的代码就像

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();

此代码没有给出任何错误,但 select 只有一个元素。 我可以使用其他方式绕过这个问题,但我想知道它为什么不起作用。

我面临同样的问题,但它从头到尾选择元素并给出一些错误

无法执行本机交互:无法获取元素的节点 - 无法进行交互

我通过这种方式得到了解决方案,你可以为你的问题做到这一点

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

如果要从列表中选择多个选项,请尝试此操作(它将选择前3个元素):

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(或release() )应该是 ButtonDown(或clickAndHold() )按钮操作之后的下一个按钮操作(有关 ButtonDown 文档,请参阅 Appium 说明)。 您的代码执行两个连续的clickAndHolds()后跟一个click()而不执行release() 它应该是这样的:

   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();

虽然链接文档不适用于 Selenium,但 Appium 构建于 Selenium 之上。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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