2015-10-20 32 views
2

我的目標是把鼠標移動到如何執行移動鼠標並單擊操作?

1)滾動區和
2)點擊,這樣滾動條將下移。

我正在使用Robot類來執行移動鼠標操作,但無法單擊滾動條區域。

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

請幫我解決問題。

+0

您可以使用DOM中的任何定位器方法找到滾動條嗎? –

+0

@RupeshShinde:我無法單獨找到滾動條,它是網格佈局的一部分。 – todayILearned

+0

[Selenium Webdriver移動鼠標到Point]可能的重複(http://stackoverflow.com/questions/12974488/selenium-webdriver-move-mouse-to-point) – JeffC

回答

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(); 
      } 

     } 
    } 
} 
+0

根據腳本,我修改了代碼。 Robot rb = new Robot(); rb.mouseMove(1135,400); Thread.sleep(5000); rb.mousePress(InputEvent.BUTTON1_MASK); Thread.sleep(5000); rb.mouseRelease(InputEvent.BUTTON1_MASK); Thread.sleep(8000); (「some-ID」))。click(); 現在,所需的web元素在視圖中。但是,我無法點擊該特定元素。 – todayILearned

相關問題