How to Handle Frames in Selenium WebDriver

แชร์
ฝัง
  • เผยแพร่เมื่อ 30 ก.ย. 2024
  • In this video, I have shown how we can handle Frames in Selenium WebDriver.
    Frames are a now deprecated means of building a site layout from multiple documents on the same domain. You are unlikely to work with them unless you are working with a pre-HTML5 web app. Iframes allow the insertion of a document from an entirely different domain and are still commonly used.
    To interact with any control inside the frame, we will need to first switch to the frame, in a similar way to how we switch windows. WebDriver offers three ways of switching to a frame.
    1) Using an index
    2) Using a name or ID
    3) Using a WebElement
    ----------- Using an index: -----------------
    It is possible to use the index of the frame to switch to that frame, such as can be queried using window.frames in JavaScript.
    Here the index starts from 0(zero)
    Example:
    // Switches to the second frame
    driver.switchTo().frame(1);
    ----------- Using a name or ID -----------------
    If your frame or iframe has an id or name attribute, this can be used instead. If the name or ID is not unique on the page, then the first one found will be switched to.
    Example:
    //Using the ID
    driver.switchTo().frame("testframe");
    //Or using the name instead
    driver.switchTo().frame("frm1");
    //Now we can click the button
    driver.findElement(By.tagName("button")).click();
    ----------- Using a WebElement -----------------
    Switching using a WebElement is the most flexible option. You can find the frame using your preferred selector and switch to it.
    Example:
    //Store the web element
    WebElement iframe = driver.findElement(By.xpath("//h1[.='Frame1']/following-sibling::iframe"));
    //Switch to the frame
    driver.switchTo().frame(iframe);
    //Now we can click the button
    driver.findElement(By.tagName("button")).click();
    -------------- Leaving a frame -----------------------
    To leave an iframe or frameset, switch back to the default content like so:
    Example:
    // Return to the top level
    driver.switchTo().defaultContent();
    --------------- Going to parent frame -----------------
    When you are in nested frames and you want to come back to the parent frame of all the child frames then we use a method called parentframe.
    Example:
    driver.switchTo().frame("testframe1");
    driver.switchTo().frame("testChildFrame1");
    driver.switchTo().frame("testChildFrame11");
    //Return to parent frame
    driver.switchTo.parentFrame();
    ==============================================
    ************* Checkout my other playlists *************
    ==============================================
    Java Programming videos playlist:👇
    🔗 bit.ly/3keRJGa
    Selenium WebDriver with Java videos playlist:👇
    🔗 bit.ly/2FyKvxj
    Selenium interview questions videos playlist:👇
    🔗 bit.ly/3matUB3
    Windows automation with FlaUI videos playlist:👇
    🔗 bit.ly/33CG4dB
    CSS Selectors videos playlist:👇
    🔗 bit.ly/2Rn0IbD
    XPath videos playlist:👇
    🔗 bit.ly/2RlLdkw
    Javascript Executor videos playlist:👇
    🔗 bit.ly/2FhNXwS
    Apache POI videos playlist:👇
    🔗 bit.ly/2RrngrH
    Maven videos playlist:👇
    🔗 bit.ly/2DYfYZE
    How to fix Eclipse errors:👇
    🔗 bit.ly/3ipvNYf
    ==============================================
    ==============================================
    Connect us @
    🔗 Website - www.hyrtutorials.com
    🔗 Facebook - HYRTutorials
    🔗 LinkedIn - www.linkedin.com/company/hyrtutorials
    🔗 Twitter - Hyrtutorials
    ==============================================
    ==============================================
    🙏 Please Subscribe🔔 to start learning for FREE now, Also help your friends in learning the best by suggesting this channel.
    #webAutomation #selenium #frames #hyrtutorials

ความคิดเห็น • 78

  • @HYRTutorials
    @HYRTutorials  4 ปีที่แล้ว +2

    Please use the below link for the selenium videos playlist:
    🔗 bit.ly/2FyKvxj

    • @anoopsahu435
      @anoopsahu435 2 ปีที่แล้ว

      how to switch from 5th frame to 4th frame in case if all are nested?

  • @factsofallahal-shaheedserv7816
    @factsofallahal-shaheedserv7816 2 ปีที่แล้ว +2

    If you find this video is not clear, you can watch this video with good , the link is in 1st comment.
    The content of the video is good, explained in simple way

  • @rvj9220
    @rvj9220 9 หลายเดือนก่อน

    Hi I would like to know if you are conducting some training sessions for Java + Selenium automation testing?

  • @chirunomulavenkatesh
    @chirunomulavenkatesh 3 ปีที่แล้ว +3

    Brilliant explanation 🙂 , I have a question , can we handle the elements inside the frames using javascript executor interface ??

    • @HYRTutorials
      @HYRTutorials  3 ปีที่แล้ว

      Yes, absolutely
      After you switch to the target frame, driver now points to that frame content.
      So you can perform any kind of operation like javascriptexecutor operations.

  • @SiddharthKaleFilms
    @SiddharthKaleFilms 2 หลายเดือนก่อน

    what is difference between frame and ? is it different

  • @vinendramogatadakala1623
    @vinendramogatadakala1623 2 ปีที่แล้ว +1

    I have a power bi report inside Iframe where I am trying to download the report to excel, I tried the same code but no luck can you help meI have a power bi report inside Iframe where I am trying to download the report to excel, I tried the same code but no luck can you help me

    • @HYRTutorials
      @HYRTutorials  2 ปีที่แล้ว

      At what stage you are struck buddy?
      Are you getting any exception?
      Send me the code and screenshot on
      hyadagirireddytutorials@gmail.com

  • @Solution4uTx
    @Solution4uTx 3 ปีที่แล้ว +1

    Hi I am trying to logging with Frame handling but still couldn't figure out still getting NoSuchElement exception
    package AutoSel;
    import java.util.concurrent.TimeUnit;
    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.chrome.ChromeDriver;
    import org.openqa.selenium.chrome.ChromeOptions;
    import org.openqa.selenium.remote.DesiredCapabilities;
    import io.github.bonigarcia.wdm.WebDriverManager;
    public class skiptest {
    public static void main(String[] args) throws InterruptedException {
    WebDriverManager.chromedriver().setup();

    ChromeOptions options =new ChromeOptions();
    WebDriver driver =new ChromeDriver(options);
    options.addArguments("--start-maximized","--incognito");
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
    DesiredCapabilities caps = new DesiredCapabilities();
    caps.setAcceptInsecureCerts(true);
    options.merge(caps);


    driver.get("www.skipthedishes.com/");
    //Thread.sleep(2000);
    driver.findElement(By.xpath("//button[@aria-label='Log In']")).click();
    //Thread.sleep(2000);
    driver.switchTo().frame(driver.findElement(By.id("ssIFrame_google")));

    driver.findElement(By.xpath("//div[contains(text(),'Email')]/ancestor::button")).click();
    driver.switchTo().defaultContent();
    Thread.sleep(2000);
    driver.quit();
    }
    }

    • @HYRTutorials
      @HYRTutorials  3 ปีที่แล้ว +1

      Actually you don't need to handle the frame here.
      Because the "Login with Email" button is not present inside any frame.
      So remove the frame handling code and execute the script.

    • @Solution4uTx
      @Solution4uTx 3 ปีที่แล้ว +1

      @@HYRTutorials thank you so much. did you post any tutorials on Grid and selenium cucumber

    • @yadagirireddy2632
      @yadagirireddy2632 3 ปีที่แล้ว

      @@Solution4uTx not yet but will create them

  • @जिंदगी_ए_सफर
    @जिंदगी_ए_सफर 2 ปีที่แล้ว +1

    Excellent video. Please give code of program

    • @HYRTutorials
      @HYRTutorials  2 ปีที่แล้ว

      I dont have that copy now buddy.
      You can pause the video and note the program

  • @anoopsahu435
    @anoopsahu435 2 ปีที่แล้ว +1

    how to switch from 5th frame to 4th frame in case if all are nested

    • @HYRTutorials
      @HYRTutorials  2 ปีที่แล้ว +1

      It's the same process buddy.
      You just need to understand where your driver focus is present and where is your target frame.

  • @Bergkamp_1886
    @Bergkamp_1886 5 วันที่ผ่านมา

    Thanks bro 🫡

  • @tgrakesh8gmail
    @tgrakesh8gmail 4 ปีที่แล้ว +1

    Learning a lot from ur videos...clear explanation..thanks for sharing the videos....waiting for CSS selector videos..👍

    • @HYRTutorials
      @HYRTutorials  4 ปีที่แล้ว

      Thankyou.
      Soon will create them.

  • @swapnabhaskaruni
    @swapnabhaskaruni 2 ปีที่แล้ว +1

    can we use switchto default content while handling windows

    • @HYRTutorials
      @HYRTutorials  2 ปีที่แล้ว

      Nope
      This method is designed for frames only

  • @saxenahimanshu6584
    @saxenahimanshu6584 3 ปีที่แล้ว +1

    It's one of kind of Website you created is superb work to understand the concept, i have to say tons of thanks

  • @HafizurRahman-dr3xe
    @HafizurRahman-dr3xe 3 ปีที่แล้ว +1

    Hey H Y R Tutorial
    Your lecture is very Impressive
    Thank you for your effort
    Have a good one

  • @Narain346
    @Narain346 8 หลายเดือนก่อน

    I have observed one small thing, if we are using thread.sleep, then frame switching with index will not work but frame switching with id or name will work; is this a known issue

  • @nripendramohanshrivastava6255
    @nripendramohanshrivastava6255 2 ปีที่แล้ว +1

    Can we handle whose visibility is hidden

    • @HYRTutorials
      @HYRTutorials  2 ปีที่แล้ว

      I dont think we can do that.
      But why do u want to handle the hidden frames?

  • @marsoniyahem3632
    @marsoniyahem3632 ปีที่แล้ว +1

    Thanks for the explanation, you made my day.

  • @RoyerAdames
    @RoyerAdames 3 ปีที่แล้ว +1

    How do you handle the case when you reload the page and all the get detached?

    • @HYRTutorials
      @HYRTutorials  3 ปีที่แล้ว

      Even if you reload the page, the frames will be attached again by the time page loading is complete.

  • @Ambitious675
    @Ambitious675 ปีที่แล้ว +1

    Loved your explanation. Thank you

  • @ChethanCP
    @ChethanCP 3 ปีที่แล้ว +1

    Awesome. Thanks a lot for the very clear explanation

  • @purvidholakia3570
    @purvidholakia3570 3 ปีที่แล้ว +1

    Nice Explanation. Is it possible to calculate the time load for using javascript or listeners?

    • @HYRTutorials
      @HYRTutorials  3 ปีที่แล้ว

      I don't think so @Purvi

    • @purvidholakia3570
      @purvidholakia3570 3 ปีที่แล้ว

      @@HYRTutorials Thanks, that is the task given to me.

  • @angaraki
    @angaraki 4 ปีที่แล้ว +1

    Thank you. You explain patiently & with sincerity. Thanks again.

  • @lightinlight
    @lightinlight 2 ปีที่แล้ว +1

    thank you , i can understand it very well now

    • @HYRTutorials
      @HYRTutorials  2 ปีที่แล้ว

      That's good to hear buddy 🙂

  • @travelwithme9998
    @travelwithme9998 4 ปีที่แล้ว +1

    Amazing job

  • @RandomFromInternet419
    @RandomFromInternet419 2 ปีที่แล้ว +1

    Обожаю туторы этого прекрасного народа. Мемы мемами, а полезность коллосальная. :)

  • @studiesonsoftwaretesting9768
    @studiesonsoftwaretesting9768 2 ปีที่แล้ว +1

    well explained.great job

  • @basithtafadher4673
    @basithtafadher4673 3 ปีที่แล้ว +1

    Thanks for your excellent lectures

    • @HYRTutorials
      @HYRTutorials  3 ปีที่แล้ว

      Thankyou, keep watching 😊

  • @sulthanarazia2014
    @sulthanarazia2014 7 หลายเดือนก่อน

    really so help full, crystal clear explanation thank you sir

  • @i4iirfan
    @i4iirfan ปีที่แล้ว

    Sir I am facing issues in chat bot to switch frame please help me out I am on job

    • @HYRTutorials
      @HYRTutorials  ปีที่แล้ว

      What's the issue you are facing?

    • @i4iirfan
      @i4iirfan ปีที่แล้ว +1

      @@HYRTutorials I am facing issue in testing chatbot

    • @HYRTutorials
      @HYRTutorials  ปีที่แล้ว

      @@i4iirfan what issue buddy

  • @akshaysagare5378
    @akshaysagare5378 3 ปีที่แล้ว +1

    Very good explanation

  • @soniappriya.
    @soniappriya. 8 หลายเดือนก่อน

    Thank you so much 🎉 It helped me😊

  • @Vasantha999vlogs
    @Vasantha999vlogs 2 ปีที่แล้ว +1

    Thank you

  • @pradideepu7273
    @pradideepu7273 2 ปีที่แล้ว

    Frames switching is taking more execution time, Is there any solution?

  • @jagratsahoo6885
    @jagratsahoo6885 2 ปีที่แล้ว +1

    Thanks HYR

  • @syedsharoz1748
    @syedsharoz1748 2 ปีที่แล้ว

    Explained in very good manner.
    Thank you Comrade.

  • @subhasrinayak3670
    @subhasrinayak3670 2 ปีที่แล้ว

    Excellent explanation sir, I had a fear to automate frames, but you recovered me from this. Thank you so much

  • @chayae3740
    @chayae3740 3 ปีที่แล้ว +1

    Tqu sir

  • @sumitbhawal6893
    @sumitbhawal6893 ปีที่แล้ว

    Code explanation starts at 10:10.

  • @lekkalasuvarchala12
    @lekkalasuvarchala12 2 ปีที่แล้ว

    Clear explanation broo😊