4
public class MyFirstSikuliTest {    
public static void main(String[] args) {
    App.open("C:\\Program Files\\Mozilla Firefox\\firefox.exe");
    Screen s = new Screen();
    try{    
            s.click("How do I take the screenshot and pass the path of the PNG here?", 0);
            s.wait("How do I take the screenshot and pass the path of the PNG here?");
            s.type(null, "WEBSITE NAME", 0);
    }
    catch(FindFailed e){
            e.printStackTrace();
    }
}
}

スクリーンショットを撮り、PNGのパスをクリックメソッドと待機メソッドに渡すにはどうすればよいですか?親切に助けてください。

PS:Firefoxブラウザを開き、アドレスバーをクリックして、Webサイト名を入力し、Enterをクリックします。

ありがとう!

4

4 に答える 4

3

ここで説明するように、スクリーンショットに対応するPNG画像へのパスを指定するだけです。

そのスクリーンショットは、任意のスクリーンショットユーティリティで作成できます。以前は、スクリーンショットを作成する簡単な方法を提供するsikuliIDEを使用してスクリプトを作成していました。

お役に立てば幸いです。

于 2012-08-28T09:54:16.207 に答える
3
public static void takePictureOfError(String Name) throws IOException,
        AWTException {
    new File("Errors").mkdir();
    Toolkit toolkit = Toolkit.getDefaultToolkit();
    Dimension screenSize = toolkit.getScreenSize();
    Rectangle screenRect = new Rectangle(screenSize);
    Robot robot = new Robot();
    BufferedImage image = robot.createScreenCapture(screenRect);
    utilsLogger.info(ImageIO.write(image, "png", new File("//"
            + Name)));
}

私はこの方法が役立つことを願っています、それは私のために働きました;)

于 2012-10-03T17:24:55.080 に答える
1

PSリクエストを処理するためのSikuliコード。

説明の数行:

3行目:アドレスバーが常に同じように見えるように新しいタブを開きます(バー内の異なるURLが異なる画像として登録される場合があります)。これはSikuliの主要なプログラミング要件であり、プログラムの使用によってわずかに変化する可能性のあるディスプレイの領域を無視します。画像の比較率を下げることもできます。

4行目:Sikuliはアドレスバーの画像を見つけます(画像はWindowsのFFからのものです)。Sikuliがクリックする画像の位置を調整するか、画像が十分に大きく、中央がアドレスバーの位置をクリックするようにすることができます(つまり、Sikuliが地球のアイコンをクリックする代わりに)。1行目で定義したURLテキストが、選択したアドレスバーに入力されます。URLの\nはEnterキーです。

于 2012-08-28T17:04:07.373 に答える
0

シクリ

public static void screenClipUser() throws IOException{
    org.sikuli.script.Screen screen = Screen.getPrimaryScreen();
    org.sikuli.script.Region region = screen.selectRegion("Select Area to capture as Image");
    ScreenImage clip = region.getLastScreenImage(); // screen.userCapture();
    ScreenImage printScreen = region.getScreen().capture();
    javax.imageio.ImageIO.write(clip.getImage(), "PNG", new File("D:\\SikuliImages\\Clip.png"));
    ImageIO.write(printScreen.getImage(), "PNG", new File("D:\\SikuliImages\\PrintScreen.png"));
    screenCaptureRegion(screen);
}
public static void screenCaptureRegion(Screen screen) throws IOException{
    java.awt.Point point = MouseInfo.getPointerInfo().getLocation();
    System.out.println("Mouse Location Co-Ordinates Previous Selected : " + point);
    //ScreenImage capturedRegion = screen.capture(point.x, point.y, 200, 200);
    ScreenImage capturedRegion = screen.capture(clip.x, clip.y, clip.w, clip.h);
    ImageIO.write(capturedRegion.getImage(), "PNG", new File("D:\\SikuliImages\\CapturedRegion.png"));
}

sikulix

public static void screenClipOneNote(){
    org.sikuli.script.IScreen scr = null;
    org.sikuli.script.EventObserver ob = null;
    final OverlayCapturePrompt oc = new org.sikuli.script.OverlayCapturePrompt(scr, ob);
        oc.prompt("Select Area to capture as Image");
        oc.addObserver(new org.sikuli.script.EventObserver() { // Inner calss
            @Override
            public void update(org.sikuli.script.EventSubject arg0) {
                org.sikuli.script.ScreenImage capturedImg = oc.getSelection(); // To use oc object make as final.
                try { 
                    ImageIO.write(capturedImg.getImage(), "PNG", new File("D:\\SikuliImages\\ScreenClip.png"));
                } catch (Exception e) {     e.printStackTrace();        }
                }
    });
}
于 2015-09-30T06:16:10.530 に答える