Java Selenium多次单击

Java Selenium多次单击,java,selenium,selenium-webdriver,jar,click,Java,Selenium,Selenium Webdriver,Jar,Click,我想在HTML ID中单击多次 我有这样的代码,每次用户定义时只需单击1次: 我的意思是,用户在输入中写入超时,在用户定义的超时中,代码在该时间段内进行最大点击 我需要的是一个点击循环这里: element.click(); 点击一次 element.click(); element.click(); 点击两次 for (int i=0; i < 10; i ++) { element.click(); } 点击10次 如果要在特定的时间运行,请参见示例 重点是:那么你需要做:

我想在HTML ID中单击多次

我有这样的代码,每次用户定义时只需单击1次:

我的意思是,用户在输入中写入超时,在用户定义的超时中,代码在该时间段内进行最大点击

我需要的是一个点击循环

这里:

element.click();
点击一次

element.click();
element.click();
点击两次

for (int i=0; i < 10; i ++) {
  element.click();
}
点击10次

如果要在特定的时间运行,请参见示例

重点是:那么你需要做:

获取时间戳 在时间戳上加上N秒 保持循环直到现在成为目标时间戳 当然,在2019年,您希望使用Java8时间/日期函数,如:

此处:

element.click();
点击一次

element.click();
element.click();
点击两次

for (int i=0; i < 10; i ++) {
  element.click();
}
点击10次

如果要在特定的时间运行,请参见示例

重点是:那么你需要做:

获取时间戳 在时间戳上加上N秒 保持循环直到现在成为目标时间戳
当然,在2019年,您希望使用Java8时间/日期函数,比如:

然后您将进入一个并发单击场景。使用java executor服务并将单击作业分配为任务。然后在executor服务上执行所有。这将使对元素的单击同时进行。远快于循环等。 请参阅下面的解决方案。任务[task 1、task 2和task 3]是Selenium中的单击事件。理想情况下,对你来说,这是同样的工作。因此,运行forloop并将相同的callable添加到列表中

ExecutorService executorService = Executors.newSingleThreadExecutor();

Set<Callable<String>> callables = new HashSet<Callable<String>>();

callables.add(new Callable<String>() {
public String call() throws Exception {
    return "Task 1";
}
});
callables.add(new Callable<String>() {
public String call() throws Exception {
    return "Task 2";
}
});
callables.add(new Callable<String>() {
public String call() throws Exception {
    return "Task 3";
}
});

List<Future<String>> futures = executorService.invokeAll(callables);

for(Future<String> future : futures){
System.out.println("future.get = " + future.get());
}

executorService.shutdown();

然后,您将进入一个并发单击场景。使用java executor服务并将单击作业分配为任务。然后在executor服务上执行所有。这将使对元素的单击同时进行。远快于循环等。 请参阅下面的解决方案。任务[task 1、task 2和task 3]是Selenium中的单击事件。理想情况下,对你来说,这是同样的工作。因此,运行forloop并将相同的callable添加到列表中

ExecutorService executorService = Executors.newSingleThreadExecutor();

Set<Callable<String>> callables = new HashSet<Callable<String>>();

callables.add(new Callable<String>() {
public String call() throws Exception {
    return "Task 1";
}
});
callables.add(new Callable<String>() {
public String call() throws Exception {
    return "Task 2";
}
});
callables.add(new Callable<String>() {
public String call() throws Exception {
    return "Task 3";
}
});

List<Future<String>> futures = executorService.invokeAll(callables);

for(Future<String> future : futures){
System.out.println("future.get = " + future.get());
}

executorService.shutdown();

可以导入以下依赖项以使用秒表对象:

以及守则:

long userDefinedInMillis = 10000; //define a time range in millis
int noOfClicks = 0;

// we use the StopWatch object here to keep track of time
StopWatch watch = new StopWatch();
watch.start();
while(watch.getTime() < userDefinedInMillis){
    element.click();
    noOfClicks++;
}
watch.stop();

System.out.println("Total no. of clicks: " + noOfClicks);
请注意,此类不是线程安全的


可以导入以下依赖项以使用秒表对象:

以及守则:

long userDefinedInMillis = 10000; //define a time range in millis
int noOfClicks = 0;

// we use the StopWatch object here to keep track of time
StopWatch watch = new StopWatch();
watch.start();
while(watch.getTime() < userDefinedInMillis){
    element.click();
    noOfClicks++;
}
watch.stop();

System.out.println("Total no. of clicks: " + noOfClicks);
请注意,此类不是线程安全的


是否尝试重复元素。单击;您想重复多少次?是否尝试重复元素。单击;你想看多少遍就看多少遍吧LOOP@MarceloDomingues我再次更新了答案。但是请理解:这是非常基本的东西,而且,你研究如何使用while循环确实是你可以/应该自己做的事情……提问者想要同时做这件事,我相信。不是一个while循环或for循环。我相信这已经为人所知了。@SriniM也许,也许不是。OP被反复要求澄清,但什么也没发生。很难说他到底想要什么。考虑到他的意见,我试着尽我所能地回答。就像现在一样LOOP@MarceloDomingues我再次更新了答案。但是请理解:这是非常基本的东西,而且,你研究如何使用while循环确实是你可以/应该自己做的事情……提问者想要同时做这件事,我相信。不是一个while循环或for循环。我相信这已经为人所知了。@SriniM也许,也许不是。OP被反复要求澄清,但什么也没发生。很难说他到底想要什么。考虑到他的意见,我尽力回答。