【问题标题】:Can anyone help me to get a value from .XML谁能帮我从 .XML 中获得价值
【发布时间】:2020-08-14 06:05:30
【问题描述】:

我已经在 selenium-java 中执行了我的代码,我需要一个在 MS edge 浏览器中打开的 .XML 中的标识符值(第二行,而不是第四行)。

我的 XML:

<Application Type="ABCD">
<Identifier>18753</Identifier>
<SalesChannel SalesChannelType="PQRS" SalesChannelSegment="XYZ">
<Identifier>AB1234</Identifier>

任何人都可以帮助我获取位于标识符第 2 行之间的值(18753)。 注意:我的代码适用于 chrome 和 FF,但机器人可以适用于 MSedge:

Assert.assertTrue(driver.getPageSource().contains("Identifier"));   
String xml =  driver.getPageSource();
String appID = xml.split("<Identifier>")[0].split("</Identifier>")[1];

【问题讨论】:

    标签: xml-parsing microsoft-edge browser-automation selenium-edgedriver


    【解决方案1】:

    我认为您的 split 函数有误。正确的代码应该是这样的:

    String appID = xml.split("</Identifier>")[0].split("<Identifier>")[1];
    

    示例代码:

    import org.junit.Assert;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.edge.EdgeDriver;
    import org.openqa.selenium.edge.EdgeOptions;
    
    
    public class Edgeauto {
        public static void main(String[] args) { 
            System.setProperty("webdriver.edge.driver", "your_path_of_webdriver\\msedgedriver.exe"); 
            EdgeOptions edgeOptions = new EdgeOptions();
            WebDriver driver = new EdgeDriver(edgeOptions); 
            driver.get("http://xxx.xml");
    
            Assert.assertTrue(driver.getPageSource().contains("Identifier"));   
            String xml =  driver.getPageSource();       
            String appID = xml.split("</Identifier>")[0].split("<Identifier>")[1];    
            System.out.println(appID);
        }
    }
    

    结果:

    【讨论】:

    • 您好周宇,感谢您的回复。但不幸的是,我无法添加 edgeOptions.addArguments("--disable-features-RendererCodeIntegrity");在我的代码中。当我做 String xml = driver.getPageSource();它正在为我打开 html 并给我一个属性值而不是 APPID
    • 代码中不需要该行。此外,您使用的是哪个版本的 Edge?您使用的是 Edge Legacy 还是 Edge Chromium?
    • 我正在使用 Edge legacy。但我得到了答案,要在 IE/Chrome 浏览器中处理 .XML 文件,只有 driver.getPageSource 无法使用,必须使用以下行:“driver.findElement(By.tagName("Identifier")).getText();"字符串 xml = driver.getPageSource(); if (sBrowserName.equals("internet explorer")){ String pageSource1=driver.findElement(By.tagName("Identifier")).getText(); appID = pageSource1.split("")[1].split("")[0]; } else{ appID = xml.split("")[1].split("")[0]; }
    • 太棒了!您可以将您的解决方案作为答案并将其标记为已接受的答案。它可以在未来帮助其他社区成员解决类似的问题。感谢您的理解。
    猜你喜欢
    • 1970-01-01
    • 2017-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-10
    • 1970-01-01
    • 2020-01-12
    • 2018-04-05
    相关资源
    最近更新 更多