Selenium WD |如何发送List <webelement>&amp;列表中的链接到另一个类?

时间:2018-01-30 16:10:05

标签: java selenium-webdriver

我有一个类#1,它有一个List,它在页面上查找链接,并记住它们。语法方面,我是否在使用布尔方法时将类#1中的列表传递给类#2?

意味着如何看待#2类中的方法,这将获得此列表? 注意:我想在#2类中使用循环,然后单击此列表中的每个链接

  

第1课

public class NavigateToInstrumentsInMarkets {

    public static boolean EnterInstrumentViaMarkets (WebDriver driver,boolean statusOfTest) throws InterruptedException
    {


        statusOfTest = false;

        int size = 2;
        for (int i = 0 ; i < size ; ++i) {

            // Create a list of instruments
            List <WebElement> list2 = driver.findElements(By.cssSelector("[nowrap='nowrap']>a"));
            String name = list2.get(i).getText(); // instrument's name taken from list

            try {

                size = list2.size();
                Thread.sleep(3000);



                // print instruments name as exception
                Thread.sleep(2000);
                statusOfTest = true;

            }

            catch (NoSuchElementException e)
            {

                System.out.println("Page of instrument not found, Page not found error 404, Instruments name that failed to load is " +name );
                statusOfTest = false;
            }

            // Print insturment's name

            try {
                WebElement instrumentName = driver.findElement(By.cssSelector("[class='float_lang_base_1 relativeAttr']"));
                System.out.println(instrumentName.getText());
            }



            catch (NoSuchElementException e)
            {
                System.out.println("Cannot find instrument's name in inner page, instrument's name is" +name );
                statusOfTest = false;
            }


            // Check if Stock is opened/closed
            WebElement Status = null;
            InstrumentRedOrGreenClock.runTestClock (driver,  Status);


        }
        return statusOfTest;
    }

2 个答案:

答案 0 :(得分:0)

Best practice是让每个测试彼此独立,因此在这种情况下,您不应该将列表从一个测试传递到另一个测试。你的列表看起来非常简单,只需重复test2中的fetch并将它们分开。

我还建议您利用TestNG或JUnit等测试框架,而不是编写自己的测试逻辑。它不仅有助于断言(验证),还有助于构建和运行测试。

答案 1 :(得分:0)

如果我需要在类之间共享元素列表,我会创建单独的页面对象,类#3,它将负责提供列表。如果我理解正确,这是你想要的清单:

List <WebElement> list2 = driver.findElements(By.cssSelector("[nowrap='nowrap']>a"));

第3类看起来像:

public class InstrumentsSection {
    private IWebDriver driver;
    public InstrumentsSection(IWebDriver driver) 
    {
        this.driver = driver;
    }

    public List<WebElement> getInstruments()
    {
        return driver.findElements(By.cssSelector("[nowrap='nowrap']>a"));
    }
}

我会实例化类并在第1类和第2类中获取列表。