日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

selenium自动化测试_使用Selenium自动化测试处理多个浏览器选项卡

發(fā)布時(shí)間:2023/12/3 HTML 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 selenium自动化测试_使用Selenium自动化测试处理多个浏览器选项卡 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

selenium自動(dòng)化測(cè)試

使用Selenium進(jìn)行自動(dòng)化測(cè)試一直是將萌芽的自動(dòng)化測(cè)試人員培養(yǎng)為專業(yè)人員的生命線。 Selenium是開源的,在全球范圍內(nèi)被廣泛采用。 結(jié)果,您會(huì)得到社區(qū)的大力支持。 提供了與Selenium綁定的不同語言的多種框架。 因此,您已經(jīng)掌握了開始使用Selenium的一切。 現(xiàn)在,進(jìn)入運(yùn)行第一個(gè)測(cè)試腳本以使用Selenium執(zhí)行自動(dòng)化測(cè)試的階段。 如果您正在學(xué)習(xí)Selenium自動(dòng)化,那么這些腳本將涉及基本的測(cè)試場(chǎng)景。 您可以驗(yàn)證:

  • 一個(gè)帶有Selenium自動(dòng)化測(cè)試的簡(jiǎn)單登錄表單 。
  • 使用Selenium WebDriver捕獲網(wǎng)頁的屏幕截圖 。
  • 在Selenium WebDriver中使用CSS定位器的 Web元素。
  • 設(shè)置Selenium Grid以并行執(zhí)行測(cè)試用例。
  • 生成Selenium測(cè)試報(bào)告 。

可能還有更多的事情,一個(gè)目標(biāo)可能是進(jìn)行驗(yàn)證,因?yàn)樗荚谑褂肧elenium執(zhí)行自動(dòng)化測(cè)試。 今天,我將幫助您使用Selenium進(jìn)行測(cè)試自動(dòng)化的基本和基本驗(yàn)證之一。 我將演示如何使用Selenium自動(dòng)化測(cè)試來處理多個(gè)瀏覽器選項(xiàng)卡。

實(shí)際方案入門

有時(shí),您可能會(huì)遇到復(fù)雜的情況,其中可能必須打開新的選項(xiàng)卡或窗口并在打開的選項(xiàng)卡/窗口上執(zhí)行所需的操作。 開始時(shí)處理多個(gè)選項(xiàng)卡或窗口可能看起來很復(fù)雜,但是一旦您知道如何處理它們,它就會(huì)變得非常容易。 讓我們考慮一個(gè)場(chǎng)景。

假設(shè)您打開了Airbnb的主頁,并希望在另一個(gè)選項(xiàng)卡中打開寄宿家庭的詳細(xì)信息,請(qǐng)?jiān)诖蜷_的選項(xiàng)卡上執(zhí)行一些操作,然后切換回上一個(gè)選項(xiàng)卡。 那你怎么做呢?

您可以在網(wǎng)上找到與此相關(guān)的多種解決方案。 很少有人使用sendkeys方法“ Control + t”來打開選項(xiàng)卡,然后在其中定位主頁的正文。 由于sendKeys與瀏覽器行為有關(guān),大多數(shù)情況下此方法無效。 因此,打開選項(xiàng)卡的最佳方法是使用Robot類或JavascriptExecutor。 機(jī)器人課程可確保使用“ Control + t”命令打開標(biāo)簽頁,而通過javascript執(zhí)行程序,您可以使用windows.open輕松打開標(biāo)簽頁。 打開選項(xiàng)卡后,您可以使用Action Class方法或Selenium WebDriver接口方法getWindowHandle&getWindowHandles切換到選項(xiàng)卡。 我將在本文中展示這兩種方法。

為了打開Airbnb中的標(biāo)簽,需要解決以下測(cè)試步驟。

  • 打開Airbnb URL。
  • 搜索“果阿”位置。
  • 儲(chǔ)存任何住宿的網(wǎng)址。
  • 開啟新分頁
  • 切換到新標(biāo)簽并啟動(dòng)所需的存儲(chǔ)URL。
  • 為了打開新標(biāo)簽,可以使用以下Robot類代碼:

    Robot r = new Robot(); r.keyPress(KeyEvent.VK_CONTROL); r.keyPress(KeyEvent.VK_T); r.keyRelease(KeyEvent.VK_CONTROL); r.keyRelease(KeyEvent.VK_T);

    上面的代碼有助于使用鍵盤的'control + t'命令打開選項(xiàng)卡。 可以使用sendKeys來執(zhí)行此操作,但是由于使用它的瀏覽器的行為,它對(duì)于工作或不工作的信譽(yù)似乎是零星的。 您可以按以下方式使用sendKeys命令來復(fù)制上述行為。

    driver.findElement(By.cssSelector(“body”)).sendKeys(Keys.CONTROL+ “t”);

    使用Window Handler方法處理Selenium中的選項(xiàng)卡

    現(xiàn)在,我們要做的就是使用Window Handler方法切換到此打開的選項(xiàng)卡。 以下代碼段供您參考:

    import java.awt.AWTException; import java.awt.Robot; import java.awt.event.KeyEvent; import java.util.Set; import java.util.concurrent.TimeUnit; ? import org.openqa.selenium.By; import org.openqa.selenium.Keys; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.interactions.Actions; ? public class HandlingMultipleTabs { ?public static void main(String[] args) throws InterruptedException, AWTException { // TODO Auto-generated method stub ????????System.setProperty( "webdriver.chrome.driver" , ".\\ChromeDriver\\chromedriver.exe" ); WebDriver driver= new ChromeDriver(); driver.manage().timeouts().implicitlyWait( 30 , TimeUnit.SECONDS); ????????//Navigating to airbnb driver.get( " https://www.airbnb.co.in/ " ); ????????driver.manage().window().maximize(); ????????String currentHandle= driver.getWindowHandle(); ????????//locating the location, looking for homestays driver.findElement(By.id( "Koan-magic-carpet-koan-search-bar__input" )).sendKeys( "Goa" , Keys.ENTER); ????????//Clicking on search button driver.findElement(By.xpath( "//button[@type='submit']" )).click(); String urlToClick=driver.findElement(By.xpath( "//div[text()='Luxury Three Bedroom Apartment with Pool & Jacuzzi']/ancestor::a" )).getAttribute( "href" ); ????????//opening the new tab Robot r = new Robot(); r.keyPress(KeyEvent.VK_CONTROL); r.keyPress(KeyEvent.VK_T); r.keyRelease(KeyEvent.VK_CONTROL); r.keyRelease(KeyEvent.VK_T); ????????//getting all the handles currently available Set<String> handles=driver.getWindowHandles(); for (String actual: handles) { ????????????if (!actual.equalsIgnoreCase(currentHandle)) { //switching to the opened tab driver.switchTo().window(actual); ?????????????//opening the URL saved. driver.get(urlToClick); } } ????????????????????????} }

    如果要切換回原始選項(xiàng)卡,請(qǐng)使用以下命令。

    driver.switchTo().defaultContent();

    現(xiàn)在,讓我們嘗試使用JavascriptExecutor打開選項(xiàng)卡,并切換到上述相同場(chǎng)景的選項(xiàng)卡。 以下是參考的代碼段:

    import java.util.Set; import java.util.concurrent.TimeUnit; ? import org.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.Keys; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; ? public class multipltabsonce123 { ?public static void main(String[] args) { // TODO Auto-generated method stub ?System.setProperty( "webdriver.chrome.driver" , ".\\ChromeDriver\\chromedriver.exe" ); WebDriver driver= new ChromeDriver(); driver.manage().timeouts().implicitlyWait( 30 , TimeUnit.SECONDS); ????????//Navigating to airbnb driver.get( " https://www.airbnb.co.in/ " ); ????????driver.manage().window().maximize(); ????????String currentHandle= driver.getWindowHandle(); ????????//locating the location, looking for homestays driver.findElement(By.id( "Koan-magic-carpet-koan-search-bar__input" )).sendKeys( "Goa" , Keys.ENTER); ????????//Clicking on search button driver.findElement(By.xpath( "//button[@type='submit']" )).click(); String urlToClick=driver.findElement(By.xpath( "//div[text()='Luxury Three Bedroom Apartment with Pool & Jacuzzi']/ancestor::a" )).getAttribute( "href" ); ????????//opening the new tab ((JavascriptExecutor)driver).executeScript( "window.open()" ); ????????//getting all the handles currently avaialbe Set<String> handles=driver.getWindowHandles(); for (String actual: handles) { ????????????if (!actual.equalsIgnoreCase(currentHandle)) { //switching to the opened tab driver.switchTo().window(actual); ?????????????//opening the URL saved. driver.get(urlToClick); } } ????????} ? }

    榮譽(yù)! 您已成功使用Selenium執(zhí)行了自動(dòng)化測(cè)試,以借助Windows Handler方法切換不同的瀏覽器選項(xiàng)卡。 現(xiàn)在,讓我們以不同的方式去做。

    使用Action類處理Selenium中的選項(xiàng)卡

    如上所述,我們可以使用Window Handler和Action Class切換到選項(xiàng)卡。 以下代碼段展示了如何使用Action類切換到標(biāo)簽頁。 由于動(dòng)作類也使用sendkey的推斷,因此在使用中的瀏覽器的作用下,它可能會(huì)起作用,也可能不會(huì)起作用。

    import java.awt.AWTException; import java.awt.Robot; import java.awt.event.KeyEvent; import java.util.Set; import java.util.concurrent.TimeUnit; ? import org.openqa.selenium.By; import org.openqa.selenium.Keys; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.interactions.Actions; ? public class HandlingMultipleTabs { ?public static void main(String[] args) throws InterruptedException, AWTException { // TODO Auto-generated method stub ????????System.setProperty( "webdriver.chrome.driver" , ".\\ChromeDriver\\chromedriver.exe" ); WebDriver driver= new ChromeDriver(); driver.manage().timeouts().implicitlyWait( 30 , TimeUnit.SECONDS); ????????//Navigating to airbnb driver.get( " https://www.airbnb.co.in/ " ); ????????driver.manage().window().maximize(); ????????String currentHandle= driver.getWindowHandle(); ????????//locating the location, looking for homestays driver.findElement(By.id( "Koan-magic-carpet-koan-search-bar__input" )).sendKeys( "Goa" , Keys.ENTER); ????????//Clicking on search button driver.findElement(By.xpath( "//button[@type='submit']" )).click(); String urlToClick=driver.findElement(By.xpath( "//div[text()='Luxury Three Bedroom Apartment with Pool & Jacuzzi']/ancestor::a" )).getAttribute( "href" ); ????????//opening the new tab Robot r = new Robot(); r.keyPress(KeyEvent.VK_CONTROL); r.keyPress(KeyEvent.VK_T); r.keyRelease(KeyEvent.VK_CONTROL); r.keyRelease(KeyEvent.VK_T); ????????????????????????//switch using actions class Actions action= new Actions(driver); action.keyDown(Keys.CONTROL).sendKeys(Keys.TAB).build().perform(); ???????//opening the URL saved. driver.get(urlToClick); ????????????????} ? }

    就是這樣! 您已經(jīng)使用Windows Handler方法和Action類通過Selenium自動(dòng)化測(cè)試處理了多個(gè)瀏覽器選項(xiàng)卡。 現(xiàn)在,我將討論使用Selenium的最常見缺點(diǎn)之一。 因此,我們知道Selenium WebDriver是用于自動(dòng)化Web應(yīng)用程序的出色開源工具。 但是,WebDriver的主要難點(diǎn)是測(cè)試腳本的順序執(zhí)行。

    作為解決方案,ThoughtWorks(Selenium的創(chuàng)始人)提出了Selenium Grid,以幫助用戶同時(shí)并行運(yùn)行多個(gè)測(cè)試用例。 這大大降低了測(cè)試構(gòu)建的執(zhí)行。

    因此,在使用Selenium執(zhí)行自動(dòng)化測(cè)試時(shí),我們有一種并行運(yùn)行多個(gè)測(cè)試用例的方法。 但是它的可擴(kuò)展性如何?

    設(shè)置自己的Selenium Grid將需要大量的CPU消耗,并且維護(hù)起來很麻煩。 您希望使用Selenium執(zhí)行并行執(zhí)行的測(cè)試數(shù)量,對(duì)計(jì)算的需求越高。 所以,你可以做什么? 如何使用Selenium進(jìn)行大規(guī)模自動(dòng)化測(cè)試?

    使用Selenium on Cloud執(zhí)行自動(dòng)化測(cè)試

    基于云的Selenium Grid可以讓您運(yùn)行測(cè)試用例,而無須設(shè)置基礎(chǔ)架構(gòu)。 您只需要一個(gè)互聯(lián)網(wǎng)連接。 我們擁有多種平臺(tái),可幫助我們提供豐富的瀏覽器,版本,移動(dòng)設(shè)備,Android版本等。

    讓我們?cè)贚ambdaTest Selenium Grid上執(zhí)行上述測(cè)試案例。 我將展示如何在基于云的平臺(tái)上打開多個(gè)選項(xiàng)卡,并訪問LambdaTest所需的詳細(xì)信息,例如視頻,屏幕截圖,控制臺(tái)日志等。

    您需要做的就是在實(shí)例化remoteWebDriver的同時(shí)設(shè)置LambdaTest URL。 該URL是用戶名,訪問密鑰和LambdaTest集線器URL的組合。 現(xiàn)在,您所需要做的就是定義所需的平臺(tái),瀏覽器,版本和附加組件。 完成此設(shè)置過程后,請(qǐng)使用相同的多標(biāo)簽?zāi)_本并在LambdaTest平臺(tái)上運(yùn)行它。 下面的參考代碼段:

    import java.awt.AWTException; import java.awt.Robot; import java.awt.event.KeyEvent; import java.net.URL; import java.util.Arrays; import java.util.Set; import java.util.concurrent.TimeUnit; ? import org.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.Keys; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.interactions.Actions; import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.remote.RemoteWebDriver; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; ? public class HandlingMultipleTabs { ??????public RemoteWebDriver driver= null ; public String url= " https://www.lambdatest.com/ " ; public static final String username= "sadhvisingh24" ; // Your LambdaTest Username public static final String auth_key = "abcdefghi123456789" ; // Your LambdaTest Access Key public static final String URL= "@hub.lambdatest.com/wd/hub" ; //This is the hub URL for LambdaTest ????????@BeforeClass public void setUp() { DesiredCapabilities capabilities= new DesiredCapabilities(); "browserName" capabilities.setCapability( "browserName" , "chrome" ); capabilities.setCapability( "version" , "73.0" ); "win10" capabilities.setCapability( "platform" , "win10" ); // If this cap isn't specified, it will just get the any available one capabilities.setCapability( "build" , "MultipleTabs_Lambdatest" ); capabilities.setCapability( "name" , "MultipleTabs_Lambdatest" ); capabilities.setCapability( "network" , true ); // To enable network logs capabilities.setCapability( "visual" , true ); // To enable step by step screenshot capabilities.setCapability( "video" , true ); // To enable video recording capabilities.setCapability( "console" , true ); // To capture console logs try { ?????????????driver = new RemoteWebDriver( new URL( " https:// " + username + ":" + auth_key + URL), capabilities); ????????????????} ??????catch (Exception e) { ????????????????System.out.println( "Invalid grid URL" + e.getMessage()); } ????System.out.println( "The setup process is completed" ); ????} ????????@Test public void handleMultipleTabs() throws InterruptedException, AWTException { // TODO Auto-generated method stub ????????driver.manage().timeouts().implicitlyWait( 30 , TimeUnit.SECONDS); ????????//Navigating to airbnb driver.get( " https://www.lambdatest.com " ); ????????driver.manage().window().maximize(); ????????String currentHandle= driver.getWindowHandle(); ????????//locating the blog url String urlToClick=driver.findElement(By.xpath( "//a[text()='Blog']" )).getAttribute( "href" ); ????????????????//opening the new tab ((JavascriptExecutor)driver).executeScript( "window.open()" ); ????????//getting all the handles currently availabe Set<String> handles=driver.getWindowHandles(); for (String actual: handles) { ????????????if (!actual.equalsIgnoreCase(currentHandle)) { //switching to the opened tab driver.switchTo().window(actual); ?????????????//opening the URL saved. driver.get(urlToClick); } } ???????????????????????} ?@AfterClass public void closeDown() { driver.quit(); } }

    上面的腳本將幫助您通過零停機(jī)時(shí)間的云Selenium Grid處理Selenium中的瀏覽器選項(xiàng)卡。 您可以在LambdaTest自動(dòng)化儀表板上查看這些測(cè)試的狀態(tài)。 在LambdaTest上使用Selenium執(zhí)行自動(dòng)化測(cè)試時(shí),您可以觀看視頻,屏幕截圖,控制臺(tái)輸出以及更多內(nèi)容。 下面引用的屏幕截圖:

    測(cè)試的控制臺(tái)輸出:

    結(jié)論

    我們演示了使用Selenium進(jìn)行的自動(dòng)化測(cè)試,以使用Action Class和Windows Handler方法處理多個(gè)選項(xiàng)卡。 我們開始意識(shí)到在本地運(yùn)行Selenium WebDriver和Grid的痛苦點(diǎn)。 轉(zhuǎn)向基于 LambdaTest之類的基于云的Selenium Grid將幫助您輕松擴(kuò)展,因此您可以大大減少構(gòu)建時(shí)間并更快地交付產(chǎn)品。

    如果您對(duì)此主題有任何疑問,請(qǐng)告訴我。 我將針對(duì)Selenium自動(dòng)化測(cè)試的基本主題撰寫更多文章,以幫助您更好地成長(zhǎng)為專業(yè)的自動(dòng)化測(cè)試人員。 請(qǐng)繼續(xù)關(guān)注更多快樂的測(cè)試!


    翻譯自: https://www.javacodegeeks.com/2019/07/handling-multiple-browser-selenium-automation-testing.html

    selenium自動(dòng)化測(cè)試

    創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

    總結(jié)

    以上是生活随笔為你收集整理的selenium自动化测试_使用Selenium自动化测试处理多个浏览器选项卡的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。