我已经检查并搜索了相同的问题并且有很多解决方案,但没有人为我工作,所以在这里提出问题。
我正在做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);
请帮助纠正我的代码。
答案 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);