鼠标clickAndHold()在Firefox上使用Selenium Web驱动程序时无法正常工作

ewm0tg9j  于 2023-01-13  发布在  其他
关注(0)|答案(3)|浏览(139)

我正在使用 selenium webdriver客户端2.39和火狐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();

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

kcrjzv8t

kcrjzv8t1#

我面临同样的问题,但它选择的元素从开始到最后,并给予一些错误,如
无法执行本机交互:无法获取元素的节点-无法交互
我用这种方法得到了解决方案你可以这样做你的问题

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

fnvucqvd2#

如果您想从列表中选择多个选项,请尝试以下操作(它将选择前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();
    }
pwuypxnk

pwuypxnk3#

ButtonUp(或release())应该是ButtonDown(或clickAndHold())按钮操作之后的下一个按钮操作(有关ButtonDown文档,请参阅Appium notes)。您的代码执行两个连续的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之上构建的。

相关问题