首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Selenium中测试页面上的子链接

如何在Selenium中测试页面上的子链接
EN

Stack Overflow用户
提问于 2020-02-11 11:49:54
回答 1查看 216关注 0票数 0

如何测试Selenium页面上的子链接。我有一个活动页面。然后从事件页面收集所有不同的事件链接。然后我想递归地在这些链接上运行测试。

我附了一张这页的图片。绿色文本都是链接。所以我收集了所有这些的href值。之后,我还要在这些页面上运行一些测试。我有一个名为EventsPageTest的测试类,用于主页。子页面的测试类称为SingleEventsPageTest.。如何将href值从主类传递到另一个类。或者还有什么其他的方法我需要遵循。我在网上搜了那么多,但没有用。任何帮助都将不胜感激。谢谢

EventsPageTest

代码语言:javascript
复制
package test;
import pages.EventsPageObjects;

@Listeners(listeners.TestListener.class)
public class EventsPageTest {

    private static ExtentHtmlReporter htmlReporter;
    private static ExtentReports extent;
    private static ExtentTest test;
    static WebDriver driver = null;
    private static EventsPageObjects eventsPage;
    public MutableCapabilities capabilities;
    static Set<String> eventsLinks = new HashSet<String>(); 
    String url;


    @BeforeSuite
    public void setUp() {

        // initialize the HtmlReporter
        htmlReporter = new ExtentHtmlReporter("extentReportsEventsPage.html");

        // initialize ExtentReports and attach the HtmlReporter
        extent = new ExtentReports();

        // attach only HtmlReporter
        extent.attachReporter(htmlReporter);
    }



     @BeforeTest
     public void setUpTest() throws IOException{
         WebDriverManager.chromedriver().setup();
            driver = new ChromeDriver();

            url = "abc.com";
            driver.get(url);

            System.out.println("Inside setUpTest");

            //Create eventsPageObject
            eventsPage = new EventsPageObjects(driver);

     }

    @Test(alwaysRun=true)
    public void collectEventsLinks() throws InterruptedException, IOException {

        test = extent.createTest("Collect all Events Links on a page","Test to Collect all Events Links on a page ");

        test.log(Status.INFO, "Starting Test Case");

        List<WebElement> links = driver.findElements(By.tagName("a"));

         for (int i = 0; i<links.size(); i++) {  
           if(Pattern.matches("^https://"+ TestRunner.url +"/events/[^/]+[^\\s]$", links.get(i).getAttribute("href")))
               eventsLinks.add((links.get(i).getAttribute("href")));
         }

         test.log(Status.INFO, "Finished Test Case");

    }


    @AfterTest(alwaysRun = true)
    public void tearDownTest() {
        //close browser
        driver.close();
        driver.quit();
    }

    @DataProvider(name="getURLS")
    @AfterTest
    public Object[] getURLS() {

        System.out.println("Inside get Urls");
        System.out.println("getURLS : " + eventsLinks.size());

        Object[] objArray = eventsLinks.toArray();

        System.out.println(eventsLinks.size());

        return objArray;
    }

    @AfterSuite
    public void tearDown() {
        extent.flush();
    }
}

SingleEventsPageTest

代码语言:javascript
复制
package test;

@Listeners(listeners.TestListener.class)
public class SingleEventsPageTest{

    private static ExtentHtmlReporter htmlReporter;

    private static ExtentReports extent;
    private static ExtentTest test;
    static WebDriver driver;
    private static SingleEventsPageObjects singleEventsPage;
    static List<Object> eventsURLS = new ArrayList<Object>();


    @BeforeSuite
    public void setUp() {
        PropertiesFile.getProperties();

        // initialize the HtmlReporter
        htmlReporter = new ExtentHtmlReporter("extentReportsSingleEventsPage.html");

        // initialize ExtentReports and attach the HtmlReporter
        extent = new ExtentReports();

        // attach only HtmlReporter
        extent.attachReporter(htmlReporter);
    }


     @BeforeTest
     public void setUpTest() throws IOException{
         WebDriverManager.chromedriver().setup();
            driver = new ChromeDriver();

            //Create eventsPageObject
            singleEventsPage = new SingleEventsPageObjects(driver);
     }

    @Test(dataProvider="getURLS",dataProviderClass=EventsPageTest.class,alwaysRun=true)
    public void findIfEventsTitleExists(String url) throws InterruptedException, IOException {

        driver.get(url);

        System.out.println("Inside findIfEventsTitleExists : " + driver.getCurrentUrl());

        test = extent.createTest("Events Title Exists","Test to verify if the Events Title exists after opening the page");

        test.log(Status.INFO, "Starting Test Case");

        test.log(Status.INFO, "Checking If the URL points to the events page else navigate to that");

        Assert.assertEquals(true,singleEventsPage.findIfEventsTitleExists());

        test.log(Status.INFO, "Finished Test Case");

    }

   @Test(dataProvider="getURLS",dataProviderClass=EventsPageTest.class,alwaysRun=true)
        public void verifyIfEventDescriptionExists(String url) throws InterruptedException, IOException {

            driver.get(url);

            test = extent.createTest("Events description Exists","Test to verify if the Events description exists");

            test.log(Status.INFO, "Starting Test Case");

            test.log(Status.INFO, "Checking If the URL points to the events page else navigate to that");
            if(singleEventsPage.getCurrentUrl() != url)
                singleEventsPage.navigateTo(url);

            test.log(Status.INFO, "Checking If the Page Sub Title Exists");
            Assert.assertEquals(true,singleEventsPage.checkIfElementExists(singleEventsPage.getEventDesc()));

            test.log(Status.INFO, "Finished Test Case");

        }


    @AfterTest(alwaysRun = true)
    public void tearDownTest() {
        //close browser
        driver.close();
        driver.quit();
    }

    @AfterSuite
    public void tearDown() {
        extent.flush();
    }

}
EN

回答 1

Stack Overflow用户

发布于 2020-02-15 19:04:01

如果你能在这里发布你的代码,那就太好了。您可以尝试将它们作为列表存储在一个类中,然后将它们传递给另一个类。

我不知道你的框架现在是如何工作的。我在想这样的事情。请在这里张贴更多代码。

代码语言:javascript
复制
class EventsPageTest {
  public List<T> getAllHref() {
    // return List
  }
}
代码语言:javascript
复制
class SingleEventsPage {
  @Test
  public void someTest () {
    EventsPageTest eventsPageTest = new EventsPageTest();
    List<T> hrefs = eventsPageTest.getAllHref();
  }

}

希望这能有所帮助

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60168171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档