我的目标是将鼠标移动到
1)滚动条区域和
2)单击以使滚动条向下移动。
我使用Robot类执行移动鼠标操作,但无法单击滚动条区域。
Robot rb=new Robot();
rb.mouseMove(1135,400);
Thread.sleep(5000);
Actions act=new Actions(driver);
act.click().perform();
请帮我解决问题。
答案 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();
}
}
}
}