gpt4 book ai didi

java - Selenium TestNG 依赖澄清设计

转载 作者:行者123 更新时间:2023-11-30 01:58:40 25 4
gpt4 key购买 nike

由于我正在使用 UDEMY 类(class)试验 TestNG,因此我需要澄清依赖部分。下面我有一个登录gmail的方法调用 gmailLogin()。我有一个单独的方法,可以在 Gmail 搜索框中搜索主题(登录后),称为 gmailSearch()。

您需要登录 Gmail 帐户才能执行搜索。我做了两件事来实验

1) 在 gmailLogin() 中提供了不正确的信息。这将会失败。2)我没有在gmailSearch()中使用dependsOnMethods =“gmailLogin”。

测试 gmailSearch() 不会失败,因为它使用 @BeforeMethod 的 google 主页搜索。 Google 主页的搜索也使用 name='q'。

问题:设计 gmailSearch() 方法以强制使用 gmailLogin() 的好方法是什么?如果当前的流程是一个糟糕的设计那么我应该结合用 1 种方法登录和搜索?

预先感谢您花时间解释/回答。

public class GoogleTest {

static WebDriver driver;

@BeforeMethod
public void setUp(){
System.setProperty("webdriver.chrome.driver", "path");
driver=new ChromeDriver();
driver.get("http://www.google.com");
driver.manage().window().maximize();
}

@Test(priority=1)
public void googleSearch(){
driver.findElement(By.xpath("//input[@name='q']")).sendKeys("news");
driver.findElement(By.xpath("//input[@value='Google Search']")).click();
if(driver.getPageSource().contains("www.foxnews.com")){
System.out.print("Search found");
}
}
@Test(priority=2,groups="Gmail")
public void gmailIcon(){
driver.findElement(By.xpath("//a[@href='https://mail.google.com/mail/?tab=wm']")).click();
if(driver.getTitle().contains("Gmail")){
System.out.print("Gmail found");
}
}
@Test(priority=2,groups="Gmail")
public void gmailLogin(){
WebDriverWait wait = new WebDriverWait(driver,30);

driver.get("https://accounts.google.com/signin/v2/identifier?continue=https%3A%2F%2Fmail.google.com%2Fmail%2F&service=mail&sacu=1&rip=1&flowName=GlifWebSignIn&flowEntry=ServiceLogin");
driver.findElement(By.xpath("//input[@type='email']")).sendKeys("aname@gmail.com");
driver.findElement(By.xpath("//span[contains(text(),'Next')]")).click();
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//input[@type='password']")));
driver.findElement(By.xpath("//input[@type='password']")).sendKeys("psd123");
driver.findElement(By.xpath("//span[contains(text(),'Next')]")).click();
if(driver.getTitle().contains("Inbox")){
System.out.print("Gmail Inbox");
}
}
@Test(groups="Gmail")
public void gmailSearch(){
driver.findElement(By.xpath("//input[@name='q']")).sendKeys("QA"+ "\n");
if(driver.getTitle().contains("Search Results")){
System.out.print("Gmail Search");
}
}
@AfterMethod
public void testDown(){
driver.quit();
}
}

最佳答案

所有内容都集中在一个类中,这不是一个好主意,您需要为每个页面设置单独的类。最好使用POM(页面对象模型)。就您而言,您有两个不同的页面:登录页面和 Gmail 页面。所以你需要为每个人上一个类。然后您就可以为您的测试用例开设类(class)。比如登录和搜索,在这个类中可以调用登录和搜索。您还需要验证登录,然后开始搜索(您可以进行测试来检查用户名以确保用户已登录,如果可以,则可以执行测试)。使用 POM 将帮助您更好地管理测试,特别是当您的测试项目很大时。您可以阅读有关 POM 的更多信息 here .

关于java - Selenium TestNG 依赖澄清设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53564810/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com