Selenium webdriver 硒参数化
我尝试了以下代码来自动化gmail,在第一个函数中,浏览器能够获取元素,直到“撰写”并单击它,但没有找到接下来的几个元素,如“to”、“subject”。我已经在void mailSend()函数中指定了下一个元素,我不确定它为什么不读取下一个元素Selenium webdriver 硒参数化,selenium-webdriver,Selenium Webdriver,我尝试了以下代码来自动化gmail,在第一个函数中,浏览器能够获取元素,直到“撰写”并单击它,但没有找到接下来的几个元素,如“to”、“subject”。我已经在void mailSend()函数中指定了下一个元素,我不确定它为什么不读取下一个元素 public class Example{ public static WebDriver driver; @BeforeClass public void before() { driver = new FirefoxDriver(); }
public class Example{
public static WebDriver driver;
@BeforeClass
public void before()
{
driver = new FirefoxDriver();
}
@Test(dataProvider = "Data-Provider-Function")
public void startup(String uName,String pass) throws Exception
{
driver.get("https://www.gmail.com");
driver.findElement(By.id("Email")).sendKeys(uName);
driver.findElement(By.id("Passwd")).sendKeys(pass);
driver.findElement(By.id("signIn")).click();
Thread.sleep(4000);
driver.findElement(By.cssSelector("div[class='T-I J-J5-Ji T-I-" +
"KE L3']")).click();
Thread.sleep(4000);
}
@DataProvider (name = "Data-Provider-Function")
public Object[][] startupProvider()
{
return new Object[][]
{
{"selva.prokarma.test@gmail.com", "prokarma"}
};
}
@Test(dataProvider="Mail Information")
public void mailSend(String to,String subject,String body) throws Exception
{
driver.navigate().refresh();
Thread.sleep(2000);
driver.findElement(By.className("vO")).sendKeys(to);
Thread.sleep(2000);
driver.findElement(By.className("aoT")).sendKeys(subject);
Thread.sleep(2000);
driver.findElement(By.cssSelector(".editable")).click();
driver.switchTo().frame(driver.findElement(By.xpath("//iframe[contains(@tabindex,'1') and contains(@frameborder,'0')]")));
driver.findElement(By.xpath("//body[@role='textbox']")).sendKeys(body);
driver.switchTo().defaultContent();
driver.findElement(By.cssSelector("div[class='T-I J-J5-Ji aoO T-I-atl L3']")).click();
Thread.sleep(4000);
driver.navigate().refresh();
Thread.sleep(4000);
}
@DataProvider (name = "Mail Information")
public Object[][] mailSendProvider()
{
return new Object[][]
{
{"selva.prokarma.test@gmail.com", "This is a Test Mail","Prokarma"},
{"selva.prokarma.test@gmail.com", "This is Test Mail 2","Hello Automation King "},
{"selva.prokarma.test@gmail.com","This is another Test Mail 3","Hello Selva"},
{"selva.prokarma.test@gmail.com","This is another Test Mail 3","Hello SelvaKumar"},
{"selva.prokarma.test@gmail.com","Hi How are you doing","Robotium Tasks to be followed"}
};
}
@AfterClass
public void tear()
{
driver.quit();
}
}我将等待时间保持为60秒,并删除了所有不需要的sleep语句。此外,我还尝试了各种单一测试方法
public class Example2 {
public static WebDriver driver;
@BeforeClass
public void before()
{
driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(60000, TimeUnit.MILLISECONDS);
}
@Test(dataProvider="Mail Information")
public void mailSend(String to,String subject,String body) throws Exception
{
driver.get("https://www.gmail.com");
driver.findElement(By.id("Email")).sendKeys("xyzy@gmail.com");
driver.findElement(By.id("Passwd")).sendKeys("*********");
driver.findElement(By.id("signIn")).click();
driver.findElement(By.cssSelector("div[class='T-I J-J5-Ji T-I-KE L3']")).click();
driver.findElement(By.className("vO")).sendKeys(to);
driver.findElement(By.className("aoT")).sendKeys(subject);
driver.findElement(By.cssSelector(".editable")).click();
driver.switchTo().frame(driver.findElement(By.xpath("//iframe[contains(@tabindex,'1') and contains(@frameborder,'0')]")));
driver.findElement(By.xpath("//body[@role='textbox']")).sendKeys(body);
driver.switchTo().defaultContent();
driver.findElement(By.cssSelector("div[class='T-I J-J5-Ji aoO T-I-atl L3']")).click();
driver.navigate().refresh();
}
@DataProvider (name = "Mail Information")
public Object[][] mailSendProvider()
{
return new Object[][]
{
{"xyzy@gmail.com", "This is a Test Mail","hello"},
};
}
@AfterClass
public void tear()
{
driver.quit();
}
附加输出屏幕截图以及。。。
您是否在同一浏览器窗口中的新gmail UI上尝试过它?是的,我只在新gmail上尝试过,直到compose按钮元素都可以找到并单击,但当谈到下一个功能“mailSend”时,它会说“element not found”,我已经为iframe工作并实现过,现在我的疑问是,y元素无法读取第二个函数。。通过安装testngjar和al-u-vilknow/。。如果不使用“数据提供者”,我可以正常运行,并在“撰写邮件”后获取元素。编辑用户名和密码,并尝试一下。你会知道它是什么错误扫描你请附加错误堆栈跟踪,(将b容易指导)顺便说一句,我尝试了相同的代码,它是完美的为我工作…检查我的答案为我使用的代码。。。