Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Selenium如何制作单击并按住按钮_Selenium_Automated Tests - Fatal编程技术网

Selenium如何制作单击并按住按钮

Selenium如何制作单击并按住按钮,selenium,automated-tests,Selenium,Automated Tests,在网页I测试是一个模式出现后,按下一个按钮约5秒 现在我正试图在selenium中实现这一点。 我有这样的方法: public static void ClickHold(IWebElement by) { SpecialInteractions.ClickAndHold(by); } 在哪里 public static Actions SpecialInteractions { get; set; } 并且没有等待时间设置 它看起来就像只是点击和释放。有没有一种方法可以等待特定的时

在网页I测试是一个模式出现后,按下一个按钮约5秒

现在我正试图在
selenium
中实现这一点。 我有这样的方法:

public static void ClickHold(IWebElement by)
{
    SpecialInteractions.ClickAndHold(by);
}
在哪里

public static Actions SpecialInteractions { get; set; }
并且没有等待时间设置


它看起来就像只是点击和释放。有没有一种方法可以等待特定的时间,然后释放?

不用挖铲斗,我可以告诉你上面的程序可能会返回
numreference异常。我怀疑您需要通过包装当前驱动程序实例来实例化
操作

可能的解决办法是:

public void ClickHold(IWebElement element)
{
    Actions action = new Actions(driver);
    action.clickAndHold(webelement).build().perform();
    //you need to release the control from the test
    //actions.MoveToElement(element).Release();
}

请记住,如果您使用的是Selenium Grid,这将不起作用。有一个错误使moveToElement成为无法识别的命令

public static Boolean moveToThenSlowClickElement(final WebDriver driver, final WebElement toElement, final int millisecondsOfWaitTime) {
        final Actions clickOnElementAndHold = new Actions(driver);
        final Actions release = new Actions(driver);
        clickOnElementAndHold.moveToElement(toElement).clickAndHold(toElement).perform();

        sleep(millisecondsOfWaitTime);

        release.release(toElement).perform();

        final Action hoverOverCheckBox = clickOnElementAndHold.build();
        hoverOverCheckBox.perform();

        return true;
    }

若它处于悬停状态,那个么您可以像悬停在元素上一样,在特定的时间内使用thread.sleep()。不幸的是,它并没有处于悬停状态。用户需要单击并按住。单击以更改页面?是。点击并按住它会显示modalCan我有你要尝试的URL吗?我很生气我粘贴得太少了。操作当然是用驱动程序实例化的。不存在NullPointerException。由于没有时间设置,此代码刚刚保留并释放。您是否尝试过在保留后使用睡眠,然后使用
Release()
method?@Anonymous\u downvoter请指定拒绝投票的原因。并且,指定我做错了什么或遗漏了什么动作动作动作=新动作(驱动程序);action.clickAndHold(webelement.build().perform();将此添加到您的答案中以使其正常工作。docker selenium grid与moveToElement存在相同的问题,但是最新版本的moveToElement再次正常工作。对我来说,这只是Firefox/Gecko3.4.0版本的FF-55.0和Gecko0.18.0版本——这对于moveToElement来说是一个糟糕的组合,最新版本的FF-59.0.1和Gecko0.20.1版本是一个不错的组合注意:当我让moveToElement为悬停测试工作时,我看到它不适用于dragAndDrop-这怎么能在这么长时间内不固定?