2014-11-28 9 views
-1

Я уже проверял и искал тот же вопрос, и есть много решений, но никто не работает для меня, поэтому задавая вопрос здесь.Загрузить файл с помощью веб-драйвера selenium

Я занимаюсь практикой веб-драйвера селена. Я использую эту форму для практики: http://www.toolsqa.com/automation-practice-form/

Теперь у меня 3 номера в этом.

1 - Есть первые 2 ссылки называются «Partial тест ссылку» & «тест List», который я могу нажать на, используя «findelement», но я хочу, чтобы открыть как ссылку в новом окне в одном браузере.

2 - Я не могу загрузить файл. Мой код не работает для этого элемента.

3 - Как я могу выбрать конкретное значение из раскрывающегося списка «Континент» ??

Мой код приведен ниже:

WebDriver driver = new FirefoxDriver(); 


    driver.get("http://www.toolsqa.com/automation-practice-form/"); 

    driver.manage().window().maximize(); 


    **driver.findElement(By.linkText("Partial Link Test")).click(); 
    driver.findElement(By.linkText("Link Test")).click();** 


    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); 


    driver.findElement(By.name("firstname")).sendKeys("Tester"); 
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); 

    driver.findElement(By.name("lastname")).sendKeys("Tester"); 
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); 


    driver.findElement(By.id("sex-0")).click(); 
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); 

    driver.findElement(By.id("exp-2")).click(); 
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); 



    driver.findElement(By.id("datepicker")).sendKeys("01/01/1985"); 
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); 


    driver.findElement(By.id("profession-1")).click(); 
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); 



    **driver.findElement(By.id("photo")).sendKeys("C:/Users/Public/Pictures/Sample Pictures/Desert.jpeg");** 
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); 


    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); 
    Thread.sleep(600); 


    driver.findElement(By.id("tool-0")).click(); 
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); 
    **driver.findElement(By.id("continents")).click();** 
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); 

Пожалуйста, помогите исправить мой код.

+0

Не могли бы вы проверить, что новое окно не находится в другом iframe. –

+0

@SakshiSingla. Цените свое время, нет iframe. ссылки открываются в окне. –

+0

Да, первая проблема решена, но можете ли вы объяснить мне, что эта линия означает? Keys.chord (Keys.CONTROL, ключи.ВЕРНУТЬ); –

ответ

3

Я добавил ответы на каждый из ваших вопросов ниже. Кроме того, совет заключается в том, чтобы использовать Implicit wait только один раз вверху при создании экземпляра браузера, поскольку его область действия - это весь класс. Итак, после объявления, селен будет ждать максимум того времени, для обнаружения элемента. Это может быть довольно переопределено с помощью Явных ожиданий для некоторых элементов, при необходимости Please see this link for better understanding Implicit and Explicit waits:

1 - Есть первые 2 ссылок называются «Partial тест ссылки» & «тест List», которые я в состоянии нажать на, используя " findelement ", но я хочу открыть обе ссылки в NEW TAB в том же браузере.

//Clicking and opening Partial Link Text in new tab 
    WebElement element = driver.findElement(By.linkText("Partial Link Test")); 
    Actions act = new Actions(driver); 
    act.contextClick(element).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ENTER).build().perform(); 

    //Clicking and opening Link Text in new tab 
    element = driver.findElement(By.linkText("Link Test")); 
    act.contextClick(element).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ENTER).build().perform(); 

2 - Я не в состоянии загрузить файл. Мой код не работает для этого элемента.
Путь к файлу должен быть таким:

driver.findElement(By.id("photo")).sendKeys("C:\\Users\\Public\\Pictures\\Sample Pictures\\Desert.jpg"); 

3 - Как я могу выбрать конкретное значение из выпадающего списка в «Континенты» ??

Вы можете использовать Выберите класс для этого, как показано ниже. Он выберет вариант «Австралия».

Select sel = new Select(driver.findElement(By.id("continents"))); 
sel.selectByVisibleText("Australia"); 
+0

Большое спасибо. Все 3 вопроса, которые вы решили для меня. Еще раз спасибо. –

+0

Рад, что это сработало. Приветствия. :) – Subh

2

Открыть ссылку в новом окне:

струнного selectLinkOpeninNewTab = Keys.chord (Keys.CONTROL, Keys.RETURN); driver.findElement (By.linkText ("urlLink")). SendKeys (selectLinkOpeninNewTab);

+0

Да, его работа теперь, но m путаница: здесь он нажимает клавишу CTRL + R вправо? и если мы нажмем, то вручную перезагрузим страницу. Тогда как в коде он работает, как Ctrl + T ?? –

+0

Мы отправляем эти ключи по ссылке (Ctrl + R). Это означает: Ctrl + Щелкните по ссылке. Если вы заметили, мы не отправляем клик по элементу. Итак, Ctrl + R делает трюк –

+0

OKAY. спасибо вам за поддержку. –

Смежные вопросы