gpt4 book ai didi

java - 使用机器人以不同的名称保存网页

转载 作者:行者123 更新时间:2023-11-30 07:38:52 25 4
gpt4 key购买 nike

我正在使用selenium创建一个打开页面并自动保存的机器人,如下所示:

    WebDriver driver = new FirefoxDriver();
driver.get("http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7043856");

Robot robot = new Robot();

robot.delay(20000);


robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_S);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyRelease(KeyEvent.VK_S);

robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);

有两个问题,首先,它实际上不按回车键,只打开另存为窗口,第二,我怎样才能让它传递不同的名称,或者至少,做文件名相同时不覆盖页面吗?

最佳答案

你是对的。当我们使用 driver.getPageSource() 时,CSS、脚本和相关资源不会被保存,并且无法正确离线查看。

我能够使用相同的代码保存文件。只需在每次操作后添加 Thread.sleep() 即可。

请注意,当“另存为”窗口打开时,焦点位于文件名上。所以你可以使用Robot类来输入文件名。关于文件名不应该被覆盖的问题,您可以使用随机数生成器。您可能需要创建一个函数来简化此任务。

请检查下面的代码。

public static void main(String[] args) throws AWTException, InterruptedException {

WebDriver driver = new FirefoxDriver();
driver.get("http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7043856");

// Added this line to let the page load completely
String pageSource = driver.getPageSource();

Robot robot = new Robot();

// Press Ctrl+S
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_S);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyRelease(KeyEvent.VK_S);

Thread.sleep(5000);

// Generate a 2 digit random number and split it into two separate chars
String random = RandomStringUtils.randomNumeric(2);
System.out.println(random);
char charOne = random.charAt(0);
char charTwo = random.charAt(1);

// Save As window has opened and the focus is on the file name field.
// Click right arrow key to go to the last of the already present name
robot.keyPress(KeyEvent.VK_RIGHT);
robot.keyRelease(KeyEvent.VK_RIGHT);

// Append the generated random number to the name
robot.keyPress(getKeyEvent(charOne));
robot.keyRelease(getKeyEvent(charOne));
robot.keyPress(getKeyEvent(charTwo));
robot.keyRelease(getKeyEvent(charTwo));

Thread.sleep(5000);

// Press enter
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);

}

public static int getKeyEvent(char key) {

switch (key) {
case '1':
return KeyEvent.VK_1;
case '2':
return KeyEvent.VK_2;
case '3':
return KeyEvent.VK_3;
case '4':
return KeyEvent.VK_4;
case '5':
return KeyEvent.VK_5;
case '6':
return KeyEvent.VK_6;
case '7':
return KeyEvent.VK_7;
case '8':
return KeyEvent.VK_8;
case '9':
return KeyEvent.VK_9;
default:
return KeyEvent.VK_0;
}
}

关于java - 使用机器人以不同的名称保存网页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34972068/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com