Невозможно нажать на кнопку «Обзор» с помощью selenium webdriver

#java #selenium #selenium-webdriver #webdriver

#java #селен #selenium-webdriver #webdriver

Вопрос:

Мне нужно нажать кнопку «Обзор» на приведенной ниже веб-странице.

http://www.guru99.com/freelancing.html

Я написал приведенный ниже код, но webdriver не может найти элемент кнопки просмотра. Пожалуйста, помогите.

 import java.io.IOException;

import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class FileUpload {

    public static void main(String[] args) throws IOException {
        System.setProperty("webdriver.gecko.driver", "C:\Eclipse\Drivers\geckodriver.exe");
        WebDriver driver = new FirefoxDriver();
        driver.navigate().to("http://www.guru99.com/freelancing.html");
        driver.findElement(By.id("theFile_link(Resume)")).click();
        //Below line execute the AutoIT script
        Runtime.getRuntime().exec(System.getProperty("user.dir") "\FileUpload.exe");
        driver.close();
    }
}
  

Я использую:

Версия Firefox: 49.0.1

Версия Selenium: версия 3.0.0-beta4

ОС: 64-разрядная версия Win10

Java: 1.8

Комментарии:

1. Обновите свой билет с помощью журнала исключений. Также сообщите нам, почему вы пытаетесь нажать эту кнопку и выполнить AutoIT скрипт вместо того, чтобы просто отправить путь к файлу в //input[@id="theFile_property(Resume)_1"]

2. Не могли бы вы также поделиться соответствующим HTML-кодом здесь

Ответ №1:

Форма (и кнопка просмотра) находятся внутри <iframe> , вам нужно сначала переключиться на нее

 WebElement iframe = driver.findElement(By.cssSelector("[src*='recruit'"])); //locate the iframe
driver.switchTo().frame(iframe);
  

И переключиться обратно

 driver.switchTo().defaultContent();
  

Ответ №2:

используйте приведенный ниже код, чтобы нажать «Обзор»:

 //first switch to iframe as the browse button is inside the iframe.
WebElement iframe = driver.findElement(By.cssSelector("[src*='recruit'"])); 
driver.switchTo().frame(iframe);

//scroll into the browse button
WebElement element = driver.findElement(By.id("theFile_link(Resume)"));
((JavascriptExecutor)   driver).executeScript("arguments[0].scrollIntoView(true);", element);

//now click on browse button
element.click();
  

надеюсь, это вам поможет.