Skip to main content
Version: 10.3

Automate mouse hover

To click an item of the drop-down menu, use the hover() method:

See the code below as an example:

import com.workfusion.odf2.compiler.BotTask;
import com.workfusion.odf2.core.task.AdHocTask;
import com.workfusion.odf2.core.task.TaskInput;
import com.workfusion.odf2.core.task.output.TaskRunnerOutput;
import com.workfusion.odf2.core.webharvest.rpa.RpaDriver;
import com.workfusion.odf2.core.webharvest.rpa.RpaFactory;
import com.workfusion.odf2.core.webharvest.rpa.RpaRunner;
import com.workfusion.rpa.driver.Driver;
import com.workfusion.rpa.helpers.RPA;
import com.workfusion.rpa.helpers.UiElement;
import com.workfusion.rpa.helpers.UiElementCollection;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.Select;
import org.slf4j.Logger;
import javax.inject.Inject;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Set;
import static com.workfusion.rpa.helpers.RPA.*;
import static com.workfusion.rpa.helpers.UiSelectors.byImage;
import static com.workfusion.rpa.helpers.UiSelectors.byText;


@BotTask(requireRpa = true)
public class AutomateWebElements implements AdHocTask {

private final RpaRunner rpaRunner;
private final Logger logger;

@Inject
public AutomateWebElements(RpaFactory rpaFactory, Logger logger){
this.rpaRunner = rpaFactory
.builder(RpaDriver.UNIVERSAL)
.closeOnCompletion(true)
.build();
this.logger = logger;
}

@Override
public TaskRunnerOutput run(TaskInput taskInput) {

rpaRunner.execute(driver->{
this.automateMouseHover(driver);
});

return taskInput.asResult()
.withColumn("example_bot_task_output", "completed_successfully");
}

private void automateMouseHover(Driver driver){
RPA.timeouts(40 * 1000);
RPA.openChrome("https://rpa-tutorial.s3.amazonaws.com/trainings/dnd/samples/dhtmlxMenu/04_items/08_change_items_images.html");
this.popAlert(driver," Mouse Hover Example ");
this.popAlert(driver," Hovering over file and clicking on open ");
$$(".top_level_text").get(0).hover();
RPA.sleep(2000);
$(byText("Open")).click();
$(By.xpath("//*[@id='imgList']/span[7]/img")).click();

RPA.sleep(2000);
this.popAlert(driver,"Hovering over Edit and clicking on Select All ");
$$(".top_level_text").get(1).hover();
RPA.sleep(2000);
$(byText("Select All")).click();
$("input").click();

RPA.sleep(2000);
UiElementCollection items = $$(".top_level_text");
this.popAlert(driver,"Hovering over File, Edit and Help options");
for(UiElement item : items){
item.hover();
RPA.sleep(2000);
}
}
private void popAlert(Driver driver,String popupMessage){
driver.switchDriver("chrome");
//Switch to default content inorder to work with alert if already on a IFrame
RPA.switchTo().defaultContent();String script = popupMessage;
driver.executeScript("alert(arguments[0])",script);
RPA.sleep(3000);
RPA.switchTo().alert().accept();
}
}