我有一个类#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;
}
答案 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类中获取列表。