Source:Hook or Modify Class at runtime
WebElement fr = driver.findElementById("theIframe");
driver.switchTo().frame(fr);
Then to move out of frame use:- driver.switchTo().defaultContent();
Best Testng code snippet using org.testng.reporters.JUnitReportReporter
Source:TestNGRunner.java  
...39import org.testng.annotations.ITestAnnotation;40import org.testng.annotations.Test;41import org.testng.reporters.EmailableReporter;42import org.testng.reporters.FailedReporter;43import org.testng.reporters.JUnitReportReporter;44import org.testng.reporters.SuiteHTMLReporter;45import org.testng.reporters.XMLReporter;46/** Class that runs a set of TestNG tests and writes the results to a directory. */47public final class TestNGRunner extends BaseRunner {48  @Override49  public void run() throws Throwable {50    for (String className : testClassNames) {51      if (!shouldIncludeTest(className)) {52        continue;53      }54      final Class<?> testClass = Class.forName(className);55      List<TestResult> results;56      if (!mightBeATestClass(testClass)) {57        results = Collections.emptyList();58      } else {59        results = new ArrayList<>();60        TestNG testng = new TestNG();61        testng.setUseDefaultListeners(false);62        testng.setAnnotationTransformer(new FilteringAnnotationTransformer(results));63        testng.setTestClasses(new Class<?>[] {testClass});64        testng.addListener(new TestListener(results));65        // use default TestNG reporters ...66        testng.addListener(new SuiteHTMLReporter());67        testng.addListener((IReporter) new FailedReporter());68        testng.addListener(new XMLReporter());69        testng.addListener(new EmailableReporter());70        // ... except this replaces JUnitReportReporter ...71        testng.addListener(new JUnitReportReporterWithMethodParameters());72        // ... and we can't access TestNG verbosity, so we remove VerboseReporter73        testng.run();74      }75      writeResult(className, results);76    }77  }78  /** Guessing whether or not a class is a test class is an imperfect art form. */79  private boolean mightBeATestClass(Class<?> klass) {80    int klassModifiers = klass.getModifiers();81    // Test classes must be public, non-abstract, non-interface82    if (!Modifier.isPublic(klassModifiers)83        || Modifier.isInterface(klassModifiers)84        || Modifier.isAbstract(klassModifiers)) {85      return false;86    }87    // Test classes must either have a public, no-arg constructor, or have a constructor that88    // initializes using dependency injection, via the org.testng.annotations.Guice annotation on89    // the class and the com.google.inject.Inject or javax.inject.Inject annotation on the90    // constructor.91    boolean foundPublicNoArgConstructor = false;92    boolean foundInjectedConstructor = false;93    boolean hasGuiceAnnotation = klass.getAnnotationsByType(Guice.class).length > 0;94    for (Constructor<?> c : klass.getConstructors()) {95      if (Modifier.isPublic(c.getModifiers())) {96        if (c.getParameterCount() == 0) {97          foundPublicNoArgConstructor = true;98        }99        if (hasGuiceAnnotation100            && (c.getAnnotationsByType(com.google.inject.Inject.class).length > 0101                || c.getAnnotationsByType(javax.inject.Inject.class).length > 0)) {102          foundInjectedConstructor = true;103        }104      }105    }106    if (!foundPublicNoArgConstructor && !foundInjectedConstructor) {107      return false;108    }109    // Test classes must have at least one public test method (or something that generates tests)110    boolean hasAtLeastOneTestMethod = false;111    for (Method m : klass.getMethods()) {112      if (Modifier.isPublic(m.getModifiers()) && m.getAnnotation(Test.class) != null) {113        hasAtLeastOneTestMethod = true;114      }115      if (Modifier.isPublic(m.getModifiers()) && m.getAnnotation(Factory.class) != null) {116        hasAtLeastOneTestMethod = true; // technically, not *quite* true, but close enough117      }118    }119    return hasAtLeastOneTestMethod;120  }121  private boolean shouldIncludeTest(String className) {122    TestDescription testDescription = new TestDescription(className, null);123    return testSelectorList.isIncluded(testDescription);124  }125  /** Compute the "full name" of a test method, including its parameters, if any. */126  private static String getTestMethodNameWithParameters(ITestResult iTestResult) {127    Object[] parameters = iTestResult.getParameters();128    String name = iTestResult.getName();129    if (parameters == null || parameters.length == 0) {130      return name;131    }132    StringBuilder builder = new StringBuilder(name).append(" (");133    builder.append(134        Arrays.stream(parameters)135            .map(136                parameter -> {137                  try {138                    return String.valueOf(parameter);139                  } catch (Exception e) {140                    return "Unstringable object";141                  }142                })143            .collect(Collectors.joining(", ")));144    builder.append(")");145    return builder.toString();146  }147  public class FilteringAnnotationTransformer implements IAnnotationTransformer {148    final List<TestResult> results;149    FilteringAnnotationTransformer(List<TestResult> results) {150      this.results = results;151    }152    @Override153    @SuppressWarnings("rawtypes")154    public void transform(155        ITestAnnotation annotation,156        Class testClass,157        Constructor testConstructor,158        Method testMethod) {159      if (testMethod == null) {160        return;161      }162      String className = testMethod.getDeclaringClass().getName();163      String methodName = testMethod.getName();164      TestDescription description = new TestDescription(className, methodName);165      TestSelector matchingSelector = testSelectorList.findSelector(description);166      if (!matchingSelector.isInclusive()) {167        // For tests that have been filtered out, record it now and don't run it168        if (shouldExplainTestSelectors) {169          String reason = "Excluded by filter: " + matchingSelector.getExplanation();170          results.add(TestResult.forExcluded(className, methodName, reason));171        }172        annotation.setEnabled(false);173        return;174      }175      if (!annotation.getEnabled()) {176        // on a dry run, have to record it now -- since it doesn't run, listener can't do it177        results.add(TestResult.forDisabled(className, methodName));178        return;179      }180      if (isDryRun) {181        // on a dry run, record it now and don't run it182        results.add(TestResult.forDryRun(className, methodName));183        annotation.setEnabled(false);184        return;185      }186    }187  }188  private static class TestListener implements ITestListener {189    private final List<TestResult> results;190    private boolean mustRestoreStdoutAndStderr;191    private PrintStream originalOut, originalErr, stdOutStream, stdErrStream;192    private ByteArrayOutputStream rawStdOutBytes, rawStdErrBytes;193    public TestListener(List<TestResult> results) {194      this.results = results;195    }196    @Override197    public void onTestStart(ITestResult result) {}198    @Override199    public void onTestSuccess(ITestResult result) {200      recordResult(result, ResultType.SUCCESS, result.getThrowable());201    }202    @Override203    public void onTestSkipped(ITestResult result) {204      recordResult(result, ResultType.ASSUMPTION_VIOLATION, result.getThrowable());205    }206    @Override207    public void onTestFailure(ITestResult result) {208      recordResult(result, ResultType.FAILURE, result.getThrowable());209    }210    @Override211    public void onTestFailedButWithinSuccessPercentage(ITestResult result) {212      recordResult(result, ResultType.FAILURE, result.getThrowable());213    }214    @Override215    public void onStart(ITestContext context) {216      // Create an intermediate stdout/stderr to capture any debugging statements (usually in the217      // form of System.out.println) the developer is using to debug the test.218      originalOut = System.out;219      originalErr = System.err;220      rawStdOutBytes = new ByteArrayOutputStream();221      rawStdErrBytes = new ByteArrayOutputStream();222      stdOutStream = streamToPrintStream(rawStdOutBytes, System.out);223      stdErrStream = streamToPrintStream(rawStdErrBytes, System.err);224      System.setOut(stdOutStream);225      System.setErr(stdErrStream);226      mustRestoreStdoutAndStderr = true;227    }228    @Override229    public void onFinish(ITestContext context) {230      if (mustRestoreStdoutAndStderr) {231        // Restore the original stdout/stderr.232        System.setOut(originalOut);233        System.setErr(originalErr);234        // Get the stdout/stderr written during the test as strings.235        stdOutStream.flush();236        stdErrStream.flush();237        mustRestoreStdoutAndStderr = false;238      }239    }240    private void recordResult(ITestResult result, ResultType type, Throwable failure) {241      String stdOut = streamToString(rawStdOutBytes);242      String stdErr = streamToString(rawStdErrBytes);243      String className = result.getTestClass().getName();244      String methodName = getTestMethodNameWithParameters(result);245      long runTimeMillis = result.getEndMillis() - result.getStartMillis();246      results.add(247          new TestResult(className, methodName, runTimeMillis, type, failure, stdOut, stdErr));248    }249    private String streamToString(ByteArrayOutputStream str) {250      try {251        return str.size() == 0 ? null : str.toString(ENCODING);252      } catch (UnsupportedEncodingException e) {253        return null;254      }255    }256    private PrintStream streamToPrintStream(ByteArrayOutputStream str, PrintStream fallback) {257      try {258        return new PrintStream(str, true /* autoFlush */, ENCODING);259      } catch (UnsupportedEncodingException e) {260        return fallback;261      }262    }263  }264  private static class JUnitReportReporterWithMethodParameters extends JUnitReportReporter {265    @Override266    public String getTestName(ITestResult result) {267      return getTestMethodNameWithParameters(result);268    }269  }270}...Source:PosidonRun.java  
...60		tng.setXmlSuites(suites);61		System.out.println(tng);//org.testng.TestNG@6e2c634b62		tng.run();63		64		//[org.testng.reporters.jq.Main@31221be2, org.testng.reporters.SuiteHTMLReporter@685f4c2e, org.testng.reporters.JUnitReportReporter@3eb07fd3, org.testng.reporters.XMLReporter@2ef1e4fa, [FailedReporter passed=0 failed=0 skipped=0], org.testng.reporters.EmailableReporter2@2b71fc7e]65		System.out.println(tng.getReporters());66		System.out.println(tng.getReporters().size());//667		68		 XMLReporter xMLReporter= new XMLReporter();69		 System.out.println(xMLReporter.getOutputDirectory());//null70		 71		 //å°emailable-report2.html é®ä»¶ååº72		 SendMail sendMail =new SendMail();73		 sendMail.sendMail();74	}75}...Source:CustomListener.java  
...80		tng.setXmlSuites(suites);81		System.out.println(tng);//org.testng.TestNG@6e2c634b82		tng.run();83		84		//[org.testng.reporters.jq.Main@31221be2, org.testng.reporters.SuiteHTMLReporter@685f4c2e, org.testng.reporters.JUnitReportReporter@3eb07fd3, org.testng.reporters.XMLReporter@2ef1e4fa, [FailedReporter passed=0 failed=0 skipped=0], org.testng.reporters.EmailableReporter2@2b71fc7e]85		System.out.println(tng.getReporters());86		System.out.println(tng.getReporters().size());//687	}88}...Source:VerifyLoginAmazon.java  
...71//	Default suite72//	Total tests run: 1, Failures: 0, Skips: 073//	===============================================74//75//	[TestNG] Time taken by org.testng.reporters.JUnitReportReporter@9e89d68: 22 ms76//	[TestNG] Time taken by [FailedReporter passed=0 failed=0 skipped=0]: 0 ms77//	[TestNG] Time taken by org.testng.reporters.SuiteHTMLReporter@73a28541: 107 ms78//	[TestNG] Time taken by org.testng.reporters.XMLReporter@48cf768c: 10 ms79//	[TestNG] Time taken by org.testng.reporters.EmailableReporter2@512ddf17: 5 ms80//	[TestNG] Time taken by org.testng.reporters.jq.Main@782830e: 128 ms...Source:JSJUnitReportReporter.java  
...23 * questions.24 */25package jdk.nashorn.internal.test.framework;26import org.testng.ITestResult;27import org.testng.reporters.JUnitReportReporter;28/**29 * Modify JUnit reports to include script file name as "method name" rather30 * than the Java method name that uses the script file for testing.31 */32public class JSJUnitReportReporter extends JUnitReportReporter {33    @Override34    protected String getTestName(final ITestResult tr) {35        final String testName = tr.getTestName();36        return (testName != null && testName.endsWith(".js"))? testName : super.getTestName(tr);37    }38}...Source:LocalJUnitReportReporter.java  
1package test.junitreports;2import org.testng.ISuite;3import org.testng.reporters.JUnitReportReporter;4import org.testng.xml.XmlSuite;5import java.io.File;6import java.util.ArrayList;7import java.util.List;8public class LocalJUnitReportReporter extends JUnitReportReporter implements TestsuiteRetriever {9    private List<Testsuite> testsuites = new ArrayList<>();10    @Override11    public void generateReport(List<XmlSuite> xmlSuites, List<ISuite> suites, String defaultOutputDirectory) {12        super.generateReport(xmlSuites, suites, defaultOutputDirectory);13        String dir = defaultOutputDirectory + File.separator + "junitreports";14        File directory = new File(dir);15        File[] files = directory.listFiles((dir1, name) -> name.endsWith(".xml"));16        testsuites.addAll(LocalJUnitXMLReporter.getSuites(files));17    }18    public Testsuite getTestsuite(String name) {19        for (Testsuite suite : testsuites) {20            if (suite.getName().equals(name)) {21                return suite;22            }...Source:e098d.java  
1diff --git a/src/main/java/org/testng/reporters/JUnitReportReporter.java b/src/main/java/org/testng/reporters/JUnitReportReporter.java2index a3122d1..237b32e 1006443--- a/src/main/java/org/testng/reporters/JUnitReportReporter.java4+++ b/src/main/java/org/testng/reporters/JUnitReportReporter.java5@@ -171,7 +171,7 @@6       xsb.pop("testsuite");7 8       String outputDirectory = defaultOutputDirectory + File.separator + "junitreports";9-      Utils.writeFile(outputDirectory, getFileName(cls), xsb.toXML());10+      Utils.writeUtf8File(outputDirectory, getFileName(cls), xsb.toXML());11     }12 13 //    System.out.println(xsb.toXML());...Source:f0dad.java  
1diff --git a/src/main/java/org/testng/reporters/JUnitReportReporter.java b/src/main/java/org/testng/reporters/JUnitReportReporter.java2index 518393e..6e7691a 1006443--- a/src/main/java/org/testng/reporters/JUnitReportReporter.java4+++ b/src/main/java/org/testng/reporters/JUnitReportReporter.java5@@ -61,7 +61,7 @@6         TestTag testTag = new TestTag();7 8         boolean isSuccess = tr.getStatus() == ITestResult.SUCCESS;9-        if (isSuccess) {10+        if (! isSuccess) {11           if (tr.getThrowable() instanceof AssertionError) {12             errors++;13           } else {...JUnitReportReporter
Using AI Code Generation
1import org.testng.reporters.JUnitReportReporter;2import org.testng.reporters.XMLReporter;3import org.testng.reporters.EmailableReporter;4import org.testng.reporters.SuiteHTMLReporter;5import org.testng.reporters.FailedReporter;6import org.testng.reporters.FailedReporterConfig;7import org.testng.reporters.JUnitReportReporter;8import org.testng.reporters.XMLReporter;9import org.testng.reporters.EmailableReporter;10import org.testng.reporters.SuiteHTMLReporter;11import org.testng.reporters.FailedReporter;12import org.testng.reporters.FailedReporterConfig;13import org.testng.reporters.JUnitReportReporter;14import org.testng.reporters.XMLReporter;15import org.testng.reporters.EmailableReporter;16import org.testng.reporters.SuiteHTMLReporter;17import org.testng.reporters.FailedReporter;18import org.testng.reporters.FailedReporterConfig;19import org.testng.reporters.JUnitReportReporter;20import org.testng.reporters.XMLReporter;21import org.testng.reporters.EmailableReporter;22import org.testng.reporters.SuiteHTMLReporter;23import org.testng.reporters.FailedReporter;24import org.testng.reporters.FailedReporterConfig;25import org.testng.reporters.JUnitReportReporter;26import org.testng.reporters.XMLReporter;27import org.testng.reporters.EmailableReporter;28import org.testng.reporters.SuiteHTMLReporter;29import org.testng.reporters.FailedReporter;30import org.testng.reporters.FailedReporterConfig;31import org.testng.reporters.JUnitReportReporter;32import org.testng.reporters.XMLReporter;33import org.testng.reporters.EmailableReporter;34import org.testng.reporters.SuiteHTMLReporter;35import org.testng.reporters.FailedReporter;36import org.testng.reporters.FailedReporterConfig;37import org.testng.reporters.JUnitReportReporter;38import org.testng.reporters.XMLReporter;39import org.testng.reporters.EmailableReporter;40import org.testng.reporters.SuiteHTMLReporter;41import org.testng.reporters.FailedReporter;42import org.testng.reporters.FailedReporterConfig;JUnitReportReporter
Using AI Code Generation
1import org.testng.reporters.JUnitReportReporter;2import org.testng.TestNG;3import org.testng.TestNGCommandLineArgs;4public class TestNGRunner {5    public static void main(String[] args) {6        TestNGCommandLineArgs cmdLineArgs = new TestNGCommandLineArgs(args);7        TestNG testng = new TestNG();8        testng.setCommandLineArgs(cmdLineArgs);9        JUnitReportReporter reporter = new JUnitReportReporter();10        reporter.setOutputDirectory("D:\\TestNGReports");11        testng.addListener(reporter);12        testng.run();13    }14}JUnitReportReporter
Using AI Code Generation
1package com.example;2import org.testng.ITestResult;3import org.testng.TestListenerAdapter;4import org.testng.reporters.JUnitReportReporter;5public class TestNGListener extends TestListenerAdapter {6    public void onTestFailure(ITestResult tr) {7        JUnitReportReporter reporter = new JUnitReportReporter();8        reporter.generateReport(null, null, "TestNG");9    }10}11package com.example;12import org.testng.ITestResult;13import org.testng.TestListenerAdapter;14import org.testng.reporters.TestNGReporter;15public class TestNGListener extends TestListenerAdapter {16    public void onTestFailure(ITestResult tr) {17        TestNGReporter reporter = new TestNGReporter();18        reporter.generateReport(null, null, "TestNG");19    }20}21package com.example;22import org.testng.ITestResult;23import org.testng.TestListenerAdapter;24import org.testng.reporters.XMLReporter;25public class TestNGListener extends TestListenerAdapter {26    public void onTestFailure(ITestResult tr) {27        XMLReporter reporter = new XMLReporter();28        reporter.generateReport(null, null, "TestNG");29    }30}31package com.example;32import org.testng.ITestResult;33import org.testng.TestListenerAdapter;34import org.testng.reporters.JUnitXMLReporter;35public class TestNGListener extends TestListenerAdapter {36    public void onTestFailure(ITestResult tr) {37        JUnitXMLReporter reporter = new JUnitXMLReporter();38        reporter.generateReport(null, null, "TestNG");39    }40}41package com.example;42import org.testng.ITestResult;43import org.testng.TestListenerAdapter;44import org.testng.reporters.EmailableReporter;45public class TestNGListener extends TestListenerAdapter {46    public void onTestFailure(ITestResult tr) {47        EmailableReporter reporter = new EmailableReporter();48        reporter.generateReport(null, null, "TestNG");49    }50}51package com.example;52import org.testng.ITestResult;53import org.testng.TestListenerAdapter;54import org.testng.reporters.HTMLReporterJUnitReportReporter
Using AI Code Generation
1import org.testng.reporters.JUnitReportReporter;2import org.testng.reporters.XMLReporter;3import org.testng.IReporter;4import org.testng.IReporterFactory;5public class MyReporterFactory implements IReporterFactory {6    public IReporter createReporter(String name) {7        if ("junit".equals(name)) {8            return new JUnitReportReporter();9        }10        if ("xml".equals(name)) {11            return new XMLReporter();12        }13        return null;14    }15}16import org.testng.reporters.TestNGReporter;17import org.testng.IReporter;18import org.testng.IReporterFactory;19public class MyReporterFactory implements IReporterFactory {20    public IReporter createReporter(String name) {21        if ("testng".equals(name)) {22            return new TestNGReporter();23        }24        return null;25    }26}27import org.testng.reporters.JUnitReportReporter;28import org.testng.IReporter;29import org.testng.IReporterFactory;30public class MyReporterFactory implements IReporterFactory {31    public IReporter createReporter(String name) {32        if ("junit".equals(name)) {33            return new JUnitReportReporter();34        }35        return null;36    }37}38import org.testng.reporters.XMLReporter;39import org.testng.IReporter;40import org.testng.IReporterFactory;41public class MyReporterFactory implements IReporterFactory {42    public IReporter createReporter(String name) {43        if ("xml".equals(name)) {44            return new XMLReporter();45        }46        return null;47    }48}49import org.testng.reporters.TestNGReporter;50import org.testng.IReporter;51import org.testng.IReporterFactory;52public class MyReporterFactory implements IReporterFactory {53    public IReporter createReporter(String name) {54        if ("testng".equals(name)) {55            return new TestNGReporter();56        }57        return null;58    }59}60import org.testng.reporters.SuiteHTMLReporter;61import org.testng.IReporter;62import org.testng.IReporterFactory;63public class MyReporterFactory implements IReporterFactory {64    public IReporter createReporter(String name) {65        if ("html".equals(name)) {JUnitReportReporter
Using AI Code Generation
1import org.testng.annotations.Test;2import org.testng.reporters.JUnitReportReporter;3public class TestNGJUnitReport {4	public void testJUnitReport() {5		JUnitReportReporter reporter = new JUnitReportReporter();6		reporter.generateReport();7	}8}9import org.testng.annotations.Test;10import org.testng.reporters.JUnitReportReporter;11public class TestNGJUnitReport {12	public void testJUnitReport() {13		JUnitReportReporter reporter = new JUnitReportReporter();14		reporter.generateReport();15	}16}17import org.testng.annotations.Test;18import org.testng.reporters.JUnitReportReporter;19public class TestNGJUnitReport {20	public void testJUnitReport() {21		JUnitReportReporter reporter = new JUnitReportReporter();22		reporter.generateReport();23	}24}25import org.testng.annotations.Test;26import org.testng.reporters.JUnitReportReporter;27public class TestNGJUnitReport {28	public void testJUnitReport() {29		JUnitReportReporter reporter = new JUnitReportReporter();30		reporter.generateReport();31	}32}33import org.testng.annotations.Test;34import org.testng.reporters.JUnitReportReporter;35public class TestNGJUnitReport {36	public void testJUnitReport() {37		JUnitReportReporter reporter = new JUnitReportReporter();38		reporter.generateReport();39	}40}41import org.testng.annotations.Test;42import org.testng.reporters.JUnitReportReporter;43public class TestNGJUnitReport {44	public void testJUnitReport() {45		JUnitReportReporter reporter = new JUnitReportReporter();46		reporter.generateReport();47	}48}49import org.testng.annotations.Test;50import org.testng.reporters.JUnitReportReporter;51public class TestNGJUnitReport {52	public void testJUnitReport() {53		JUnitReportReporter reporter = new JUnitReportReporter();54		reporter.generateReport();55	}56}57import org.testng.annotations.Test;58import org.testng.reporters.JUnitReportReporter;JUnitReportReporter
Using AI Code Generation
1import org.testng.*;2import org.testng.xml.*;3import org.testng.reporters.JUnitReportReporter;4import org.testng.reporters.XMLReporter;5public class TestNGRunner {6    public static void main(String[] args) {7        TestNG testng = new TestNG();8        testng.setTestClasses(new Class[]{TestNGTest.class});9        testng.setUseDefaultListeners(false);10        testng.addListener(new JUnitReportReporter());11        testng.addListener(new XMLReporter());12        testng.run();13    }14}15package test;16import org.testng.annotations.*;17public class TestNGTest {18    public void test() {19        System.out.println("Hello World!");20    }21}22java -cp .;C:\Users\user\.m2\repository\org\testng\testng\6.14.3\testng-6.14.3.jar org.testng.reporters.JUnitReportReporter testng-results.xmlJUnitReportReporter
Using AI Code Generation
1public void testMethod() {2    Reporter.log("This is to generate the report in XML format");3}4public void testMethod() {5    Reporter.log("This is to transform the XML report to HTML report");6}7public void testMethod() {8    Reporter.log("This is to generate the report in XML format");9}10public void testMethod() {11    Reporter.log("This is to transform the XML report to HTML report");12}13public void testMethod() {14    Reporter.log("This is to generate the report in XML format");15}16public void testMethod() {17    Reporter.log("This is to transform the XML report to HTML report");18}19public void testMethod() {20    Reporter.log("This is to generate the report in XML format");21}22public void testMethod() {23    Reporter.log("This is to transform the XML report to HTML report");24}25public void testMethod() {26    Reporter.log("This is to generate the report in XML format");27}28public void testMethod() {29    Reporter.log("This is to transform the XML report to HTML report");30}31public void testMethod() {32    Reporter.log("This is to generate the report in XML format");33}34public void testMethod() {35    Reporter.log("This is to transform the XML report to HTML report");36}37public void testMethod() {38    Reporter.log("This is to generate the report in XML format");39}Source: Hook or Modify Class at runtime 
1WebElement fr = driver.findElementById("theIframe");23driver.switchTo().frame(fr);45Then to move out of frame use:- driver.switchTo().defaultContent();61driver.switchTo().defaultContent()2TestNG is a Java-based open-source framework for test automation that includes various test types, such as unit testing, functional testing, E2E testing, etc. TestNG is in many ways similar to JUnit and NUnit. But in contrast to its competitors, its extensive features make it a lot more reliable framework. One of the major reasons for its popularity is its ability to structure tests and improve the scripts' readability and maintainability. Another reason can be the important characteristics like the convenience of using multiple annotations, reliance, and priority that make this framework popular among developers and testers for test design. You can refer to the TestNG tutorial to learn why you should choose the TestNG framework.
You can push your abilities to do automated testing using TestNG and advance your career by earning a TestNG certification. Check out our TestNG certification.
Watch this complete tutorial to learn how you can leverage the capabilities of the TestNG framework for Selenium automation testing.
Get 100 minutes of automation test minutes FREE!!
