国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

2023年,8種必備Selenium編寫自動化用例的技巧

這篇具有很好參考價(jià)值的文章主要介紹了2023年,8種必備Selenium編寫自動化用例的技巧。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

2023年,8種必備Selenium編寫自動化用例的技巧

在開始自動化時(shí),您可能會遇到各種可能包含在自動化代碼中的方法,技術(shù),框架和工具。有時(shí),與提供更好的靈活性或解決問題的更好方法相比,這種多功能性導(dǎo)致代碼更加復(fù)雜。在編寫自動化代碼時(shí),重要的是我們能夠清楚地描述自動化測試的目標(biāo)以及我們?nèi)绾螌?shí)現(xiàn)它。

話雖如此,編寫“干凈的代碼”以提供更好的可維護(hù)性和可讀性很重要。編寫干凈的代碼也不是一件容易的事,您需要牢記許多最佳實(shí)踐。以下主題突出顯示了編寫更好的自動化代碼應(yīng)獲得的8條銀線。

2023年,8種必備Selenium編寫自動化用例的技巧

?

1.命名約定

當(dāng)我們從手動轉(zhuǎn)向自動化或?qū)嶋H上以任何編程語言編寫代碼時(shí),這確實(shí)是要牢記的經(jīng)驗(yàn)法則之一。遵循正確的命名約定有助于更輕松地理解代碼和維護(hù)。此命名約定暗含變量,方法,類和包。例如,您的方法名稱應(yīng)特定于其用途。“ Register_User()”方法描述了在該方法中顯示用戶注冊的方法。明確定義的方法名稱增加了腳本的易于維護(hù)和可讀性。這同樣適用于變量命名。我注意到許多人提到變量為a,b,c等,甚至將Web元素稱為Weblelement1,Webelement2等。這樣一來,用戶看不到變量名與預(yù)期的一樣。

以下是顯示命名錯誤的示例:

public void Register_User() throws InterruptedException
    {
        driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
        driver.get("https://www.lambdatest.com/ ");
        driver.manage().window().maximize();
        WebElement web1= driver.findElement(By.xpath("http://a[text()='Free Sign Up']"));
        web1.click();
        WebElement web2=driver.findElement(By.xpath("http://input[@name='organization']"));
        web2.sendKeys("LambdaTest");
        WebElement web3=driver.findElement(By.xpath("http://input[@name='first_name']"));
        web3.sendKeys("Test");
        WebElement web4=driver.findElement(By.xpath("http://input[@name='last_name']"));
        web4.sendKeys("User");
        WebElement web5=driver.findElement(By.xpath("http://input[@name='email']"));
        web5.sendKeys("sadhvi.singh@navyuginfo.com");
        WebElement web6=driver.findElement(By.xpath("http://input[@name='password']"));
        web6.sendKeys("TestUser123");
        WebElement web7=driver.findElement(By.xpath("http://input[@name='phone']"));
        web7.sendKeys("9412262090");
        WebElement web8=driver.findElement(By.xpath("http://button[text()='SIGN UP']"));
        web8.click();
        Thread.sleep(3500);

    }   

上面的代碼顯示了“ method1”如何不向用戶提供任何線索,就像該方法的確切作用一樣。另外,所有的web元素都通過web1,web2等表示。用戶無法識別哪個(gè)Web元素捕獲了哪個(gè)字段。

對于上述相同的代碼,可以如下標(biāo)記正確的表示方式:

public void Register_User() throws InterruptedException
    {
        driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
        driver.get("https://www.lambdatest.com/ ");
        driver.manage().window().maximize();
        WebElement link= driver.findElement(By.xpath("http://a[text()='Free Sign Up']"));
        link.click();
        WebElement organization=driver.findElement(By.xpath("http://input[@name='organization']"));
        organization.sendKeys("LambdaTest");
        WebElement first_name=driver.findElement(By.xpath("http://input[@name='first_name']"));
        first_name.sendKeys("Test");
        WebElement last_name=driver.findElement(By.xpath("http://input[@name='last_name']"));
        last_name.sendKeys("User");
        WebElement email=driver.findElement(By.xpath("http://input[@name='email']"));
        email.sendKeys("sadhvi.singh@navyuginfo.com");
        WebElement password=driver.findElement(By.xpath("http://input[@name='password']"));
        password.sendKeys("TestUser123");
        WebElement phone_number=driver.findElement(By.xpath("http://input[@name='phone']"));
        phone_number.sendKeys("9412262090");
        WebElement button=driver.findElement(By.xpath("http://button[text()='SIGN UP']"));
        button.click();
        Thread.sleep(3500);
        String url= driver.getCurrentUrl();
        assertEquals("fail- unable to register", url, "https://accounts.lambdatest.com/user/email-verification");

    }

在這里,方法名稱'Register_User'通過名稱明確定義了用戶,指示該方法包含與用戶注冊相關(guān)的代碼。同樣,所有Web元素或變量都具有與用于定義意圖的捕獲字段相關(guān)的名稱。

通常,通常鼓勵使用駝峰式大小寫來記錄方法或變量,因?yàn)樗诳勺x性和維護(hù)腳本方面更加清晰。

2.減少,重用和回收

確保將您的方法分解到用戶場景的最小塊上非常重要。它們應(yīng)涵蓋簡單和單一的流程。不要讓您的方法與單一方法涵蓋的多個(gè)功能過于復(fù)雜。例如,登錄功能需要在應(yīng)用程序上注冊用戶。將您的注冊功能保留在另一個(gè)方法中,如果需要,請?jiān)诘卿浄椒ㄖ姓{(diào)用該方法。降低方法的復(fù)雜度可簡化代碼的可維護(hù)性。

另外,在需要的地方重復(fù)使用您的方法,請勿將相同的代碼復(fù)制粘貼到不同的方法中。這導(dǎo)致代碼中不必要的重復(fù)和冗余。增加代碼行并不意味著您已經(jīng)編寫了不錯的代碼。重構(gòu)和優(yōu)化代碼是編寫穩(wěn)定,健壯和更好的自動化代碼的關(guān)鍵。

回收也是編寫更好的自動化代碼的另一個(gè)有用技巧。我有經(jīng)驗(yàn)豐富的人員可以自動化遺留系統(tǒng),不傾向于在自動化框架中更改現(xiàn)有方法,而不會在現(xiàn)有功能發(fā)生變化時(shí)重寫另一種方法。這只是使框架變得脆弱。每當(dāng)流程改變時(shí),總是要更新現(xiàn)有方法,盡管它有其自身的挑戰(zhàn),即新用戶可能不知道該方法可能具有的依賴性,但是我認(rèn)為我們應(yīng)該始終以長遠(yuǎn)的眼光來看待問題,而不是實(shí)現(xiàn)那些較短的目標(biāo)。 。

下面是一個(gè)示例,說明如何將登錄代碼簡化為一小部分功能,并使用了另一種注冊方法來簡化整個(gè)過程。

@Test
    public void Register_User() throws InterruptedException
    {
        driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
        driver.get("https://www.lambdatest.com/ ");
        driver.manage().window().maximize();
        WebElement link= driver.findElement(By.xpath("http://a[text()='Free Sign Up']"));
        link.click();
        WebElement organization=driver.findElement(By.xpath("http://input[@name='organization']"));
        organization.sendKeys("LambdaTest");
        WebElement first_name=driver.findElement(By.xpath("http://input[@name='first_name']"));
        first_name.sendKeys("Test");
        WebElement last_name=driver.findElement(By.xpath("http://input[@name='last_name']"));
        last_name.sendKeys("User");
        WebElement email=driver.findElement(By.xpath("http://input[@name='email']"));
        email.sendKeys("sadhvi.singh@navyuginfo.com");
        WebElement password=driver.findElement(By.xpath("http://input[@name='password']"));
        password.sendKeys("TestUser123");
        WebElement phone_number=driver.findElement(By.xpath("http://input[@name='phone']"));
        phone_number.sendKeys("9412262090");
        WebElement button=driver.findElement(By.xpath("http://button[text()='SIGN UP']"));
        button.click();
    }   

    @Test
    public void Login_User()
    {

          driver.get("https://accounts.lambdatest.com/login");
          driver.findElement(By.xpath("http://input[@name='email']")).sendKeys("User2@gmail.com");
          driver.findElement(By.xpath("http://input[@name='password']")).sendKeys("TestUser123");
          driver.findElement(By.xpath("http://button[@class='sign-up-btn']")).click();

    }

    @AfterClass
    public static void BrowserClose()
    {

        driver.quit();
    }

    }

3.合理地組織測試

好的,這確實(shí)是確保更好的自動化代碼的主要可操作見解之一。它不僅易于理解,而且在維護(hù)上無需花費(fèi)太多精力。從長遠(yuǎn)來看,借助框架來構(gòu)建測試可以增加工作價(jià)值,并減少維護(hù)工作。您可以通過使用由JUnit和TestNG之類的框架提供的注釋來控制應(yīng)用程序的流程。例如,使用@BeforeClass之類的注釋可以幫助您指導(dǎo)耗時(shí)的活動,例如連接到數(shù)據(jù)庫,設(shè)置瀏覽器等與此方法相關(guān)的代碼以及與此相關(guān)聯(lián)的@BeforeClass注釋。這可以幫助自動化測試儀立即知道該方法的確切功能以及何時(shí)調(diào)用該方法。試想一下,您的設(shè)置過程很清楚,并且已從代碼的其他部分中整理出來。

下面的示例突出顯示了通過TestNG框架展示了一種更好的結(jié)構(gòu)化方法:

import static org.junit.Assert.*;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

public class Lamdatest {

    static WebDriver driver;

    @BeforeClass
    public static void BrowserOpen()
    {
        System.setProperty("webdriver.chrome.driver", "chromepath"); 
        driver= new ChromeDriver() ;
        driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
    }

    @Test(priority=1)
    public void Register_User() throws InterruptedException
    {
        driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
        driver.get("https://www.lambdatest.com/ ");
        driver.manage().window().maximize();
        WebElement link= driver.findElement(By.xpath("http://a[text()='Free Sign Up']"));
        link.click();
        WebElement organization=driver.findElement(By.xpath("http://input[@name='organization']"));
        organization.sendKeys("LambdaTest");
        WebElement first_name=driver.findElement(By.xpath("http://input[@name='first_name']"));
        first_name.sendKeys("Test");
        WebElement last_name=driver.findElement(By.xpath("http://input[@name='last_name']"));
        last_name.sendKeys("User");
        WebElement email=driver.findElement(By.xpath("http://input[@name='email']"));
        email.sendKeys("sadhvi.singh@navyuginfo.com");
        WebElement password=driver.findElement(By.xpath("http://input[@name='password']"));
        password.sendKeys("TestUser123");
        WebElement phone_number=driver.findElement(By.xpath("http://input[@name='phone']"));
        phone_number.sendKeys("9412262090");
        WebElement button=driver.findElement(By.xpath("http://button[text()='SIGN UP']"));
        button.click();
        String url= driver.getCurrentUrl();
        assertEquals("fail- unable to register", url, "https://accounts.lambdatest.com/user/email-verification");

    }   

    @Test(dependsOnMethods="Register_User") 
    public void Login_User()
    {

          driver.get("https://accounts.lambdatest.com/login");
          driver.findElement(By.xpath("http://input[@name='email']")).sendKeys("User2@gmail.com");
          driver.findElement(By.xpath("http://input[@name='password']")).sendKeys("TestUser123");
          driver.findElement(By.xpath("http://button[@class='sign-up-btn']")).click();

    }

    @AfterClass
    public static void BrowserClose()
    {

        driver.quit();
    }

    }

確定哪些注釋應(yīng)該與哪種測試方法相關(guān)聯(lián)是很重要的。通過明確的依賴關(guān)系和優(yōu)先級,可以根據(jù)應(yīng)用程序的流程來構(gòu)造測試和代碼。

4.全面驗(yàn)證您的測試

作為質(zhì)量檢查人員,您要做的就是驗(yàn)證您的預(yù)期和實(shí)際滿足情況,這與您的自動化代碼相同。如果您的腳本不符合驗(yàn)證要求,那么創(chuàng)建一個(gè)腳本將毫無意義,也沒有任何意義。理想情況下,每個(gè)用戶操作都應(yīng)該像測試用例步驟一樣進(jìn)行驗(yàn)證,無論它是在驗(yàn)證元素的可見性,還是要記住版式提示,文本表示形式,頁面重定向或任何形式的視覺驗(yàn)證,甚至是關(guān)于評估數(shù)據(jù)庫的結(jié)果。

即使您的驗(yàn)證無法確定,也會顯示失敗消息,以便您可以找出問題所在。我們在驗(yàn)證代碼方面犯的最大錯誤是從確保驗(yàn)證通過的角度編寫。我們從未考慮過如果代碼失敗或未達(dá)到預(yù)期效果會發(fā)生什么,那么繼續(xù)下去將需要什么。

如果您希望在驗(yàn)證失敗后立即中斷測試并跳至另一測試,則可以使用硬斷言,而如果您希望在同一頁面上驗(yàn)證多個(gè)檢查,則可以選擇軟斷言。決定完全使用哪個(gè)斷言取決于用例。

以下是在登錄頁面上執(zhí)行的斷言示例。在此方法中,將創(chuàng)建一種方法,其中使用有效憑據(jù)登錄用戶,然后使用另一種方法確保用戶不會使用無效憑據(jù)登錄并顯示錯誤消息。

//validate user able to login with valid credentials
        @Test
        public void Login_User() throws IOException
        {

            driver.get("https://accounts.lambdatest.com/login");
            driver.findElement(By.xpath("http://input[@name='email']")).sendKeys("User2@gmail.com");
            driver.findElement(By.xpath("http://input[@name='password']")).sendKeys("TetsUser123");
            driver.findElement(By.xpath("http://button[@class='sign-up-btn']")).click();
              WebDriverWait wait= new WebDriverWait(driver, 15);
              wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.xpath("http://a[@class='user-profile dropdown-toggle']"))));
              String Current_url= driver.getCurrentUrl();
              Assert.assertEquals("https://accounts.lambdatest.com/user/email-verification", Current_url);
              System.out.println("user logged in sucesfully");
              driver.findElement(By.xpath("http://a[@class='user-profile dropdown-toggle']")).click();
              driver.findElement(By.xpath("http://a[contains(text(),'Logout')]")).click();
            }

        //validate user is unable to login with invalid credentials
                @Test
                public void Login_invalid_User() throws IOException
                {

                      driver.get("https://accounts.lambdatest.com/login");
                      driver.findElement(By.xpath("http://input[@name='email']")).sendKeys("User21@gmail.com");
                      driver.findElement(By.xpath("http://input[@name='password']")).sendKeys("TestUser123");
                      driver.findElement(By.xpath("http://button[@class='sign-up-btn']")).click();
                      WebDriverWait wait= new WebDriverWait(driver, 15);
                      String str= driver.findElement(By.xpath("http://p[@class='error-mass']")).getText();
                      String Current_url= driver.getCurrentUrl();
                      Assert.assertEquals("https://accounts.lambdatest.com/login", Current_url);
                      System.out.println(str);
                }

覆蓋多個(gè)驗(yàn)證檢查的方法可能有所不同,或者您可以像我上面所做的那樣為每個(gè)驗(yàn)證選擇不同的方法,或者可以選擇在try-catch塊下的單個(gè)方法中進(jìn)行所有驗(yàn)證。

5.sleep不能改善穩(wěn)定性

我們傾向于相信的最大神話,尤其是當(dāng)我們剛接觸自動化領(lǐng)域時(shí),是通過為腳本提供足夠的等待量,必要或不必要的等待會導(dǎo)致腳本順利執(zhí)行。相反,它使腳本不穩(wěn)定,并增加了總體執(zhí)行時(shí)間。這種靜態(tài)睡眠的主要問題是,我們不了解運(yùn)行測試的機(jī)器的負(fù)載,因此可能導(dǎo)致超時(shí)。因此,應(yīng)避免使用thread.sleep來維護(hù)更好的自動化代碼。對腳本使用等待的一種更好的方法是通過條件綁定,其中腳本可以像人類一樣等待直到滿足特定條件。例如,等待直到某個(gè)元素可見或不可見。

作為開發(fā)更好的自動化代碼的一種選擇,顯式和流暢的等待更加適應(yīng)。

6.進(jìn)行測試,數(shù)據(jù)驅(qū)動

在對多種形式的數(shù)據(jù)進(jìn)行測試時(shí),測試變得更加有效,當(dāng)編寫更好的自動化代碼以測試Web應(yīng)用程序或任何其他軟件時(shí),測試也是如此。在自動化中,關(guān)鍵是通過多種形式的數(shù)據(jù)測試測試代碼,而不是為每個(gè)數(shù)據(jù)編寫不同的測試腳本。這可以通過數(shù)據(jù)驅(qū)動的測試框架輕松實(shí)現(xiàn)。它有助于將測試數(shù)據(jù)輸入存儲到外部數(shù)據(jù)庫中,例如CSV文件,excel文件,文本文件,XML文件甚至是ODBC存儲庫。此數(shù)據(jù)被調(diào)用到腳本中,并一次又一次地運(yùn)行在相同的測試代碼中。與手動工作相比,這有助于減少冗余并加快執(zhí)行速度。發(fā)現(xiàn)新的bug。這種方法的另一個(gè)好處是,它減少了您可能必須添加的測試腳本的數(shù)量,從而加快了測試周期。

與之保持同步,它還有助于簡化腳本的可維護(hù)性。如果應(yīng)用程序發(fā)生任何更改,代碼中的所有硬編碼值都可能會中斷。實(shí)現(xiàn)此目的的一種更簡單的方法是將所有硬編碼組件設(shè)置為變量驅(qū)動。例如,通過將它們各自的值存儲在excel工作表中并在腳本中調(diào)用它們,可以使所有定位器都不受代碼限制。萬一您的任何定位器損壞了,您只需要在excel中更改定位器的值即可,而根本不需要觸摸腳本。

數(shù)據(jù)驅(qū)動測試的一個(gè)基本示例是:

        public void Login_User() throws IOException
        {

            File f1= new File("C://Users//navyug//Desktop//Test.xlsx");
            FileInputStream scr= new FileInputStream(f1);
            XSSFWorkbook book= new XSSFWorkbook(scr);
            XSSFSheet sheet=book.getSheetAt(0);
            for(int i=0; i<=sheet.getLastRowNum(); i++ )
            {
                //XSSFCell cell= sheet.getRow(i).getCell(1);
             Row row = sheet.getRow(i);
             Cell cell = row.getCell(0);

              driver.findElement(By.xpath("http://input[@name='email']")).sendKeys(cell.toString());
              cell= row.getCell(1);

              driver.findElement(By.xpath("http://input[@name='password']")).sendKeys(cell.toString());

            driver.findElement(By.xpath("http://button[@class='sign-up-btn']")).click();
              WebDriverWait wait= new WebDriverWait(driver, 15);
              wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.xpath("http://a[@class='user-profile dropdown-toggle']"))));
              String Current_url= driver.getCurrentUrl();
              Assert.assertEquals("https://accounts.lambdatest.com/user/email-verification", Current_url);
              System.out.println("user logged in sucesfully");
              takescreenshot();
              driver.findElement(By.xpath("http://a[@class='user-profile dropdown-toggle']")).click();
              driver.findElement(By.xpath("http://a[contains(text(),'Logout')]")).click();
            }
        }

上面的代碼顯示了從Excel獲取的用于不同登錄憑據(jù)的數(shù)據(jù)。對于Xpath也可以擴(kuò)展同樣的功能,其中XPath值也可以從excel中提取。在這里,通過數(shù)據(jù)驅(qū)動方法解決的關(guān)鍵點(diǎn)是從我們的代碼中刪除硬編碼的值,使其成為面向變量,并使其在多組輸入中運(yùn)行同一段代碼。

7.不要錯過報(bào)告!

如果自動化代碼沒有向您報(bào)告結(jié)果,則該代碼將無法正常工作。為了優(yōu)化您作為自動化工程師的工作,重要的是要知道哪些測試代碼通過了,哪些失敗并附帶了屏幕截圖。您可以向利益相關(guān)者展示的最佳投資回報(bào)是通過報(bào)告。共享這些詳細(xì)的報(bào)告可提供可見性,并減少您驗(yàn)證測試執(zhí)行腳本的時(shí)間。您可以通過TestNG HTML報(bào)告生成,JUnit報(bào)告生成等各種技術(shù)來實(shí)現(xiàn)報(bào)告,也可以使用擴(kuò)展庫來實(shí)現(xiàn)報(bào)告。

下面的代碼顯示了一個(gè)示例,其中登錄功能的完成后已截取了屏幕截圖作為驗(yàn)證通過的證明,而下面是執(zhí)行后生成的TestNG報(bào)告的示例:

//validate user able to login with valid credentials
        @Test
        public void Login_User() throws IOException
        {

            driver.get("https://accounts.lambdatest.com/login");
            driver.findElement(By.xpath("http://input[@name='email']")).sendKeys("User2@gmail.com");
            driver.findElement(By.xpath("http://input[@name='password']")).sendKeys("TetsUser123");
            driver.findElement(By.xpath("http://button[@class='sign-up-btn']")).click();
              WebDriverWait wait= new WebDriverWait(driver, 15);
              wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.xpath("http://a[@class='user-profile dropdown-toggle']"))));
              String Current_url= driver.getCurrentUrl();
              Assert.assertEquals("https://accounts.lambdatest.com/user/email-verification", Current_url);
              System.out.println("user logged in sucesfully");
              takescreenshot();
              driver.findElement(By.xpath("http://a[@class='user-profile dropdown-toggle']")).click();
              driver.findElement(By.xpath("http://a[contains(text(),'Logout')]")).click();
            }

        public void takescreenshot() throws IOException
        {
            TakesScreenshot scr= ((TakesScreenshot)driver);
            File file1= scr.getScreenshotAs(OutputType.FILE);

           FileUtils.copyFile(file1, new File("C:\\Users\\navyug\\Desktop\\Login_user.PNG")); 
        }

8.不要忘記跨瀏覽器測試!

如今,所有Web應(yīng)用程序都支持多種瀏覽器和版本。重要的是,您的代碼應(yīng)針對多個(gè)瀏覽器,而不是針對特定的瀏覽器。在特定的瀏覽器上運(yùn)行代碼會失去應(yīng)用程序的跨瀏覽器兼容性。執(zhí)行跨瀏覽器測試,以確保您的應(yīng)用程序在所有主要瀏覽器上都能提供無縫的用戶體驗(yàn),我們可以擴(kuò)展此測試的自動化范圍。諸如TestNG之類的框架有助于輕松地在各種瀏覽器中執(zhí)行測試。

下面的代碼顯示了如何通過TestNG在多個(gè)瀏覽器上運(yùn)行自動化代碼

public class crowssbrowser {

    static WebDriver driver;

    @Parameters("browser")
    @BeforeClass
    public static void Browser_Select(String browser)
    {
        if(browser.equalsIgnoreCase("firefox")) {

            System.setProperty("webdriver.firefox.marionette", "geckodriverpath");
              driver = new FirefoxDriver();

          // If browser is IE, then do this   

          }else if (browser.equalsIgnoreCase("chrome")) { 

              // Here I am setting up the path for my IEDriver

              System.setProperty("webdriver.chrome.driver", "chromedriverpath"); 
                driver= new ChromeDriver() ;
          }

        driver.get("https://accounts.lambdatest.com/login");
          driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
    }

XML代碼:

<?xml ve
rsion="1.0" encoding="UTF-8"?>

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">

<suite name="Suite" parallel="none">

 <test name="FirefoxTest">

 <parameter name="browser" value="firefox" />

 <classes>

 <class name="crowssbrowser" />

 </classes>

 </test>

 <test name="chrometest">

 <parameter name="browser" value="chrome" />

 <classes>

 <class name="crowssbrowser" />

 </classes>

 </test>

</suite>

上面的代碼顯示了一種以瀏覽器為參數(shù)的方法,其中設(shè)置了不同的瀏覽器驅(qū)動程序。使用TestNG XML文件,我們已將參數(shù)傳遞為不同的瀏覽器,在這些瀏覽器上將運(yùn)行用于Firefox和chrome上的登錄功能的代碼。以上內(nèi)容就是本篇的全部內(nèi)容以上內(nèi)容希望對你有幫助,有被幫助到的朋友歡迎點(diǎn)贊,評論。

?如果文章對你有幫助,記得點(diǎn)贊,收藏,加關(guān)注。會不定期分享一些干貨哦......

最后感謝每一個(gè)認(rèn)真閱讀我文章的人,看著粉絲一路的上漲和關(guān)注,禮尚往來總是要有的,雖然不是什么很值錢的東西,如果你用得到的話可以直接拿走:

2023年,8種必備Selenium編寫自動化用例的技巧

這些資料,對于想做【軟件測試】的朋友來說應(yīng)該是最全面最完整的備戰(zhàn)倉庫,這個(gè)倉庫也陪伴我走過了最艱難的路程,希望也能幫助到你!凡事要趁早,特別是技術(shù)行業(yè),一定要提升技術(shù)功底。希望對大家有所幫助……加入我的學(xué)習(xí)交流群一起學(xué)習(xí)交流討論把?。。?!??

2023年,8種必備Selenium編寫自動化用例的技巧文章來源地址http://www.zghlxwxcb.cn/news/detail-406794.html

到了這里,關(guān)于2023年,8種必備Selenium編寫自動化用例的技巧的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【AltWalker】模型驅(qū)動:輕松實(shí)現(xiàn)自動化測試用例的生成和組織執(zhí)行

    【AltWalker】模型驅(qū)動:輕松實(shí)現(xiàn)自動化測試用例的生成和組織執(zhí)行

    模型驅(qū)動的自動化測試(Model-Based Testing, 后文中我們將簡稱為MBT)是一種軟件測試方法,它將系統(tǒng)的行為表示為一個(gè)或多個(gè)模型,然后從模型中自動生成和執(zhí)行測試用例。這種方法的核心思想是將測試過程中的重點(diǎn)從手動編寫測試用例轉(zhuǎn)移到創(chuàng)建和維護(hù)描述系統(tǒng)行為的模型。

    2024年02月15日
    瀏覽(45)
  • 用Python編寫UI自動化用例第一步from selenium import webdriver,即導(dǎo)入第三方驅(qū)動包時(shí)報(bào)錯,高效解決辦法,報(bào)錯問題已解決

    用Python編寫UI自動化用例第一步from selenium import webdriver,即導(dǎo)入第三方驅(qū)動包時(shí)報(bào)錯,高效解決辦法,報(bào)錯問題已解決

    問題:在PyCharm中新建一個(gè)文件,py01_test_01.py文件。編寫UI自動化用例的第一步就是導(dǎo)入驅(qū)動(from selenium import webdriver),在已經(jīng)安裝selenium的情況下(pip install selenium==3.141.0),執(zhí)行的時(shí)候還是報(bào)錯。如下圖: ? ? 原因排查過程:從報(bào)錯信息,錯誤信息為沒有找到selenium。首先查

    2024年02月12日
    瀏覽(20)
  • python+pytest接口自動化(12)-自動化用例編寫思路 (使用pytest編寫一個(gè)測試腳本)

    python+pytest接口自動化(12)-自動化用例編寫思路 (使用pytest編寫一個(gè)測試腳本)

    經(jīng)過之前的學(xué)習(xí)鋪墊,我們嘗試著利用pytest框架編寫一條接口自動化測試用例,來厘清接口自動化用例編寫的思路。 我們在百度搜索 天氣查詢 ,會出現(xiàn)如下圖所示結(jié)果: 接下來,我們以該天氣查詢接口為例,編寫接口測試用例腳本。 針對某個(gè)功能做接口測試,首先我們需

    2024年02月04日
    瀏覽(30)
  • 自動化用例編寫思路 (使用pytest編寫一個(gè)測試腳本)

    自動化用例編寫思路 (使用pytest編寫一個(gè)測試腳本)

    目錄 一,明確測試對象 二,編寫測試用例 構(gòu)造請求數(shù)據(jù) 封裝測試代碼 斷言設(shè)置 三,執(zhí)行腳本獲取測試結(jié)果 四,總結(jié) 經(jīng)過之前的學(xué)習(xí)鋪墊,我們嘗試著利用pytest框架編寫一條接口自動化測試用例,來厘清接口自動化用例編寫的思路。 我們在百度搜索天氣查詢,會出現(xiàn)如下

    2024年02月16日
    瀏覽(23)
  • web自動化測試入門篇07 ——— 用例編寫技巧

    web自動化測試入門篇07 ——— 用例編寫技巧

    ? ? ?? 作者簡介:博主是一位測試管理者,同時(shí)也是一名對外企業(yè)兼職講師。 ?? 主頁地址:【Austin_zhai】 ?? 目的與景愿:旨在于能幫助更多的測試行業(yè)人員提升軟硬技能,分享行業(yè)相關(guān)最新信息。 ?? 聲明:博主日常工作較為繁忙,文章會不定期更新,各類行業(yè)或職場問

    2023年04月25日
    瀏覽(22)
  • Sonic-UI自動化用例編寫教程與建議

    ? ? ? ?UI測試被業(yè)界列入測試金字塔的頂層,由此可見,UI測試具有單元測試、接口測試不能完成的部分,具有不可替代性。在多數(shù)情況下,UI測試的職能,是在單元測試、接口測試中業(yè)務(wù)邏輯測試充分時(shí),致力于功能驗(yàn)證測試、用戶行為測試、設(shè)備兼容性測試等;部分UI測試

    2023年04月08日
    瀏覽(25)
  • 如何編寫接口自動化框架系列通過yaml來管理測試用例(四)

    如何編寫接口自動化框架系列通過yaml來管理測試用例(四)

    本文是接口自動化測試框架系列篇的第四篇 ,主要介紹yaml包的使用 。自動化測試的本質(zhì)是將功能測試用例交給代碼去 目錄 1. yaml介紹? 2.python中的yaml包 3.項(xiàng)目中使用yaml包 4 項(xiàng)目總結(jié) 執(zhí)行 ,測試人員往往是在自動化框架添加對應(yīng)的測試用例即可(也叫測試腳本)。而維護(hù)測試

    2024年02月07日
    瀏覽(23)
  • 學(xué)會自動化必備工具-Selenium-再想著入坑自動化測試吧

    學(xué)會自動化必備工具-Selenium-再想著入坑自動化測試吧

    隨著近些年IT行業(yè)的發(fā)展,軟件測試人才的需求越來越大,也有很多小伙伴在考慮入坑,而軟件測試中,收入相對較高的就是自動化了,所以這次就專門為大家簡單介紹下自動化測試的必備工具Selenium。 Selenium是一款基于Web應(yīng)用程序的開源測試工具 ,直接運(yùn)行在瀏覽器中,支

    2024年01月23日
    瀏覽(34)
  • Selenium+python怎么搭建自動化測試框架、執(zhí)行自動化測試用例、生成自動化測試報(bào)告、發(fā)送測試報(bào)告郵件

    Selenium+python怎么搭建自動化測試框架、執(zhí)行自動化測試用例、生成自動化測試報(bào)告、發(fā)送測試報(bào)告郵件

    本人在網(wǎng)上查找了很多做自動化的教程和實(shí)例,偶然的一個(gè)機(jī)會接觸到了selenium,覺得非常好用。后來就在網(wǎng)上查閱各種selenium的教程,但是網(wǎng)上的東西真的是太多了,以至于很多東西參考完后無法系統(tǒng)的學(xué)習(xí)和應(yīng)用。 以下整理的只是書中自動化項(xiàng)目的知識內(nèi)容,介紹怎么搭

    2024年02月05日
    瀏覽(30)
  • Selenium之路: UI自動化測試的必備指南

    Selenium之路: UI自動化測試的必備指南

    自動化測試指軟件測試的自動化,可以使用軟件工具或腳本來執(zhí)行測試任務(wù)的過程,以替代人工進(jìn)行重復(fù)性、繁瑣或耗時(shí)的測試活動;是將人為驅(qū)動的測試行為轉(zhuǎn)化為機(jī)器執(zhí)行的過程 。 自動化測試包括 UI 自動化,接口自動化,單元測試自動化。 Selenium 是 Web 應(yīng)用中基于 UI

    2024年04月22日
    瀏覽(31)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包