Как нажать на ссылку href="javascript:void(0)" и перейти к открытому окну (Selenium)
На странице есть такой элемент:
<a href="javascript:void(0)"> Computer durchsuchen </a>
Если вы нажмете на эту ссылку, откроется окно, в котором вы можете выбрать изображение (путь). Мне удалось нажать на ссылку, и окно открывается. Мой вопрос теперь, как я могу пройти путь и как я могу закрыть его снова?
Это код, который я сделал до сих пор:
WebDriver driver = new FirefoxDriver();
driver.get("https://www.shirtee.com/de/designer/?id=1140/");
WebElement link = driver.findElement(By.cssSelector(".upload-image-drop-zone a"));
Actions ob = new Actions(driver);
ob.click(link);
org.openqa.selenium.interactions.Action action = ob.build();
action.perform();
Здесь вы можете увидеть скриншот процессов, которые происходят...
1 ответ
Поскольку Selenium
не может взаимодействовать с родными окнами, вы можете использовать Robot
класс для него:
Robot robot = new Robot();
StringSelection selection = new StringSelection("Absolute path of the file");
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(selection,null);
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyRelease(KeyEvent.VK_V);
robot.setAutoDelay(2000);
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
Полный код будет выглядеть так:
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import java.awt.*;
import java.awt.datatransfer.StringSelection;
import java.awt.event.KeyEvent;
public class Test {
public static void main(String[] args) throws InterruptedException, AWTException {
final WebDriver driver = new ChromeDriver();
driver.get("https://www.shirtee.com/de/designer/?id=1140/");
WebElement link = driver.findElement(By.cssSelector(".upload-image-drop-zone a"));
link.click();
Thread.sleep(500); // small pause
Robot robot = new Robot();
StringSelection selection = new StringSelection("C:\\full\\path\\to\\file\\image.png");
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(selection,null);
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyRelease(KeyEvent.VK_V);
robot.setAutoDelay(2000);
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
Thread.sleep(3000); // only to see the result
driver.quit();
}
}
Более подробную информацию вы можете найти в документации здесь.