Чтобы решить вашу проблему, просто замените new window
на _self
в следующей строке кода:
driver.execute_script('window.open("https://ocr.space/" , "_self")')
Ваш код работает нормально, но причина ошибки в том, что после запускаВ коде он запускает браузер с двумя вкладками, кроме окон, и страница будет запущена во втором окне, поэтому вам нужно переключиться в это окно перед загрузкой изображения.
Вы можете использовать дескрипторы окон для переключения в это окно.Ниже приведен код на Java, вы можете попробовать сделать то же самое с помощью Python:
// Using JavaScriptExecutor to launch the browser
JavascriptExecutor jse = (JavascriptExecutor) driver;
jse.executeScript("window.open(\"https://ocr.space/\" , \"new window\")");
// Fetching window handles and switching to the last window
Set<String> handles = driver.getWindowHandles();
for(String handle : handles) {
driver.switchTo().window(handle);
}
// Printing window title
System.out.println(driver.getTitle());
// Uploading an image
WebElement field = driver.findElement(By.xpath("//input[@type='file']"));
String imagePath = "some image";
field.sendKeys(imagePath);
Если вы используете window.open()
для запуска URL, тогда он сделает две вещи: сначала он запустит браузер с окном по умолчанию, затемон откроет URL в новой вкладке, даже если вы не указали аргумент new window
в своей функции JavaScript.Вам нужно переключиться на определенное окно, чтобы выполнить какие-либо операции с ним, если вы выберете этот способ.
Чтобы избежать вышеуказанной проблемы, просто вы можете использовать driver.get(URL)
или driver.navigate().to(URL)
, который запускает браузер и переходит копределенный URL-адрес в том же запущенном окне браузера.
Если вы хотите использовать JavaScriptExecutor только без переключения, вы можете передать _self
в качестве второго аргумента функции JavaScript, как показано ниже, вместо new window
, что позволяет избежатьпереключается и запускает URL в том же окне:
JavascriptExecutor jse = (JavascriptExecutor) driver;
jse.executeScript("window.open(\"https://ocr.space/\" , \"_self\")");
System.out.println(driver.getTitle());
WebElement field = driver.findElement(By.xpath("//input[@type='file']"));
String imagePath = "some image";
field.sendKeys(imagePath);
Надеюсь, это поможет ...