Selenium Webdriver:由于返回类型未知,可重用的 xml 解析类方法不起作用 [英] Selenium Webdriver : Reusable xml parsing class method is not working due to return type unknown

查看:17
本文介绍了Selenium Webdriver:由于返回类型未知,可重用的 xml 解析类方法不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

1) 我创建了一个 xml 文件如下:

1) I have created a xml file as follows:

 <SearchStrings>
    <Search id="1111" type="high">
        <Questions>What is software Testing?</Questions>
        <Tips>How to connect database with eclipse ?</Tips>
        <Multiple>Who was the first prime minister of India? </Multiple>
        <Persons>Who is Dr.APJ Abdul Kalam </Persons>
    </Search>
   <Search id="2222" type="low">
        <Questions>What is Automation Testing?</Questions>
        <Tips>How to use selenium webdriver </Tips>
        <Multiple>Who was the fourth prime minister of India? </Multiple>
        <Persons>Who is Superman? </Persons>
    </Search>    
    <Search id="3333" type="medium">
        <Questions>What is Selenium ide  Testing?</Questions>
        <Tips>How to use selenium webdriver with eclipse  ? </Tips>
        <Multiple>Who was the ninth prime minister of India? </Multiple>
        <Persons>Who is Spiderman? </Persons>
    </Search>  
     <Search id="4444" type="optional">
        <Questions>What is database Testing?</Questions>
        <Tips>How to use Class in java ? </Tips>
        <Multiple>Who was the eight prime minister of India? </Multiple>
        <Persons>Who is motherindia? </Persons>
    </Search>  
</SearchStrings>

2) 创建一个类,一次获取标签节点并将它们全部存储在一个 String [] SearchString 然后使用这个数组来获取值并通过 .sendKeys(value) 属性在谷歌搜索它们.

2) Creating a class which fetch nodes of tags at once and store all of them in a String [] SearchString and then use this array to fetch the values and by .sendKeys(value) attribute search them at google.

简化:

1) 将元素标记元素存储在可重用的数据类型中,我的知识有限,因此使用字符串数组.2) 获取字符串数组元素并使用 .sendkeys(element) 在谷歌搜索它们.

我的代码如下:

 package searchexperiment;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.util.concurrent.TimeUnit;

    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.parsers.ParserConfigurationException;
    import javax.xml.xpath.XPath;
    import javax.xml.xpath.XPathConstants;
    import javax.xml.xpath.XPathExpressionException;
    import javax.xml.xpath.XPathFactory;

    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.firefox.FirefoxDriver;
    import org.w3c.dom.Document;
    import org.w3c.dom.NodeList;
    import org.xml.sax.SAXException;

    public class Experiment implements Paths
    {
    public static WebDriver driver;
    static Document document;
    static DocumentBuilder db;
    public static void main(String args[])
    {
        String[] SearchStrings;
        driver=new FirefoxDriver();
        driver.manage().timeouts().implicitlyWait(50, TimeUnit.SECONDS);
        driver.get("https://www.google.com/");

        //loading xml as test data

        WebElement googlebox=driver.findElement(By.id("gbqfq"));
        try {
            FileInputStream file = new FileInputStream(new File(test_xml));

            DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();

            DocumentBuilder builder =  builderFactory.newDocumentBuilder();

            Document xmlDocument = builder.parse(file);

            XPath xPath =  XPathFactory.newInstance().newXPath();

            System.out.println("*************************");
            String expression="/SearchStrings/Search/Questions";
            System.out.println("This is ordered expression \n"+expression);
            NodeList nodeList = (NodeList) xPath.compile(expression).evaluate(xmlDocument, XPathConstants.NODESET);
            for(int i=0;i< nodeList.getLength();i++)
            {
                 // Node nNode = emailNodeElementList.item(j);
                //  Element eElement = (Element) nNode;
                System.out.println("Taking the loop value");
// below push is not working.
                Object array = push(SearchStrings[i],nodeList.item(i).getFirstChild().getNodeValue());
                  String text=nodeList.item(i).getFirstChild().getNodeValue();  
                  googlebox.clear();
                  googlebox.sendKeys(text);
                  System.out.println("Closing the loop value");

            }

我使用字符串数组是为了使 xml 解析类可重用.我使用了一个接口来获取文件名

I am using the string array in order to make xml parsing class reusable. I have used an interface to get file name

public interface Paths {
String test_xml="XML/Searchtext.xml";
}

推荐答案

可重用的方法和类是:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathFactory;

import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

import searchexperiment.Paths;
public class DocBuilderClass implements Paths
{

public static String[] username() 
{
    String[] SearchElements=new String[4];
    try
    {
        FileInputStream file = new FileInputStream(new File(test_xml));

        DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();

        DocumentBuilder builder =  builderFactory.newDocumentBuilder();
         Document xmlDocument = builder.parse(file);

        XPath xPath =  XPathFactory.newInstance().newXPath();

        System.out.println("*************************");
        String expression="/SearchStrings/Search/Tips";
        System.out.println("This is ordered expression \n"+expression);
        NodeList nodeList = (NodeList) xPath.compile(expression).evaluate(xmlDocument, XPathConstants.NODESET);
        //int size=
        for(int i=0;i< nodeList.getLength();i++)
        {
             // Node nNode = emailNodeElementList.item(j);
            //  Element eElement = (Element) nNode;
            System.out.println("Taking the loop value");
            //Object array = push(SearchStrings[i],nodeList.item(i).getFirstChild().getNodeValue());
              String text=nodeList.item(i).getFirstChild().getNodeValue();  
              //googlebox.clear();
             // googlebox.sendKeys(text);
              SearchElements[i]=text;
              System.out.println("Closing the loop value");

        }

    }
    catch(Exception ex)
    {
    System.out.println("This is a exception" + ex);
    }
    finally
    {

    }
    return SearchElements;

}   
}

然后调用类的方法如下:

and then way to call the class was as follows:

String [] namelist=DocBuilderClass.username();
    for(int i=0;i<namelist.length;i++)
    {

        String abc=namelist[i];

        googlebox.sendKeys(abc);
        googlebox.clear();
        googlebox.sendKeys(namelist[i]);


    }

参考是 参考链接字符串[]数组

参考链接 XML 解析

我了解到,您的基础知识应该很强,才能解决强大而复杂的问题.

All I learn that Your basics should be strong to solve a strong and complex problems.

这篇关于Selenium Webdriver:由于返回类型未知,可重用的 xml 解析类方法不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆