使用selenium web驱动程序上传文件

时间:2014-11-28 08:17:30

标签: java selenium selenium-webdriver

我已经检查并搜索了相同的问题并且有很多解决方案,但没有人为我工作,所以在这里提出问题。

我正在做selenium web driver的练习。我正在使用此表单进行练习:http://www.toolsqa.com/automation-practice-form/

现在,我有 3个问题

1 - 有前2个链接称为“部分链接测试”&使用“findelement”能够点击的“列表测试”,但是想在同一浏览器的NEW TAB中打开这两个链接。

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);

请帮助纠正我的代码。

2 个答案:

答案 0 :(得分:3)

我已在下面的每个问题中添加了内联答案。另外,建议是在创建浏览器实例时在顶部使用Implicit等待一次,因为它的范围是整个类本身。因此,一旦声明,那么selenium将等待最多那段时间,以检测元素。如果需要Please see this link for better understanding Implicit and Explicit waits

,可以使用显式等待某些元素来覆盖它

1 - 有前2个链接称为“部分链接测试”&使用“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");

答案 1 :(得分:2)

在新标签页中打开链接:

String selectLinkOpeninNewTab = Keys.chord(Keys.CONTROL,Keys.RETURN); driver.findElement(By.linkText( “urlLink”))的SendKeys(selectLinkOpeninNewTab);