Jako że swego czasu całkiem dużo czasu poświęciłem na znalezienie satysfakcjonującego mnie rozwiązania pozwalającego na odczyt wartości z plików XML (i oczywiście późniejsze ich wykorzystywanie w testach automatycznych), chciałbym innym tego czasu oszczędzić i przedstawić skuteczne oraz proste rozwiązanie. Znakomicie sprawdzi się (a przynajmniej powinno) jako baza do dalszego rozwoju maszynek zaciągających dane z plików wystawionych na zewnątrz.
Poniższe przykłady napisane w JAVA.
1. Zaczynamy od zdefiniowania prostego Stringa. To już tutaj dzieje się „wciąganie” pliku do pamięci i wyciąganie z niego interesujących nas wartości.
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathFactory;
import org.w3c.dom.Document;
public class XMLReader
{
public static String GetSiteAddress() throws Exception
{
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
documentBuilderFactory.setNamespaceAware(true);
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
//path to the Parameters.xml file
Document document = documentBuilder.parse("config\\Parameters.xml");
//initialize java-native XPath reader
XPathFactory xpathFactory = XPathFactory.newInstance();
XPath xpath = xpathFactory.newXPath();
//get the requested value by using XPath
XPathExpression expr = xpath.compile("config/sites/site[@ToTest]/address");
//return value
String address = (String) expr.evaluate(document, XPathConstants.STRING);
return address;
}
}2. W dowolnej klasie która zawiera zdefiniowane testy, sprawdzamy, że powyższy String zostanie poprawnie zwrócony. W moim przypadku miejscem w którym użyję zczytywania z XML, będzie klasa Setup, która jest standardowo używana na samym starcie każdego wykonania zbioru testów.
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import XMLReader.XMLReader;
import XMLWriter.XMLWriter;
import org.openqa.selenium.ie.InternetExplorerDriver;
public class Setup {
public static void WebDriverSetup() throws Exception {
//initialize driver
System.setProperty(XMLReader.GetBrowser(), XMLReader.GetWebDriverExe());
if(XMLReader.GetBrowser().contains("webdriver.ie.driver")){
//here was something... :)
}
else {
driver = new ChromeDriver();
//tests should start with opening a baseUrl (http://192.168.1.10:1555 in this case)
String baseUrl = XMLReader.GetSiteAddress();
driver.get(baseUrl);
driver.manage().deleteAllCookies();
driver.manage().window().maximize();
}
}
}3. Uruchamiamy testy i sprawdzamy, że wartości, które zaciągnęła nasza maszynka są zgodne z tym co podaliśmy w ścieżce XPath w Stringu GetSiteAddress i zgodnie z tym, co jest w samym pliku XML, którego przykładowwą zawartość umieszczam poniżej.
C:\\Users\\rmianowicz\\Automaty\\Project_1\\screenshots\\ webdriver.chrome.driver MyPortal_1.0http://192.168.1.10:1555
admin ZbigniewStonoga MyPortal_2.0
http://192.168.1.10:1556admin ZbigniewStonoga















