如何执行移动鼠标和单击操作?

时间:2015-10-20 04:36:40

标签: java selenium

我的目标是将鼠标移动到

1)滚动条区域和
2)单击以使滚动条向下移动。

我使用Robot类执行移动鼠标操作,但无法单击滚动条区域。

Robot rb=new Robot();
rb.mouseMove(1135,400);
Thread.sleep(5000);
Actions act=new Actions(driver);
act.click().perform();

请帮我解决问题。

1 个答案:

答案 0 :(得分:1)

好的,所以这是一个非常一般的演示。您可以轻松地根据您的需求进行调整。如果要在滚动中使用不同的高度,则必须考虑到滚动窗格越高,我使用的时间(一秒)就越大。但是,对于通用的,您可以检测滚动窗格何时位于底部并且不再调用计时器。我评论了你可以用来使它成为通用的部分。

import java.util.Timer;
import java.util.TimerTask; 
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import java.awt.Dimension;

import java.awt.Robot;
import java.awt.event.InputEvent;

public class Stackoverflow extends JFrame{
    private java.util.Timer timer;
    private JFrame window;
    public static void main(String [] args){
        new Stackoverflow();
    }
    public Stackoverflow(){
        JPanel panel = new JPanel();
        panel.setPreferredSize(new Dimension(500, 2000));
        panel.setOpaque(false);


        this.window = this;
        this.timer = new java.util.Timer();
        timer.schedule(new AutoSaveTasker(), 1000);         

        this.add(new JScrollPane(panel));
        this.pack();
        this.setVisible(true);
    }
    class AutoSaveTasker extends TimerTask{
        @Override
        public void run(){
            /*
            if(scroll not at the bottom yet?) 
                then call timer again like this /timer.schedule(new AutoSaveTasker(), INTERVAL);
            */
            try{

                Robot robot = new Robot();
                robot.mouseMove(window.getWidth() - 10, window.getHeight() - 10);
                robot.mousePress(InputEvent.BUTTON1_MASK);
                Thread.sleep(1000);
                robot.mouseRelease(InputEvent.BUTTON1_MASK);
            }
            catch(Exception e){
                e.printStackTrace();
            }

        }
    }
}