在将 XHR 响应发送到客户端浏览器之前修改它

问题描述

我是 Webproxy 的新手,所以需要专家的指导! 我正在使用 Selenium 远程 Web 驱动程序在 Saucelas 中运行我的 UI 自动化测试。 当客户端浏览器(在 Saucelabs 中)尝试打开 URL“https://abc.xyz.com/login”时,它会发出 XHR 请求以从服务器获取 JSON 文件内容。 然后根据此 JSON 文件中的值显示 UI 元素。 JSON 文件看起来像这样..

{
"Login.Company": "Company","Login.Username": "User name","Login.Password": "Password"
}

我希望在 XHR 响应被客户端浏览器处理之前修改这些键的值,这样客户端就会看到类似这样的内容......

{
    "Login.Company": "NewCompany","Login.Username": "NewUser name","Login.Password": "NewPassword"
}

我的代码看起来像这样...

public class WebProxyTests {
Proxy proxy;
browserMobProxyServer proxyServer;
private Proxy proxyConfig;
WebDriver driver;

@BeforeClass
void setup() {
    proxyServer = new browserMobProxyServer();
    proxyServer.start();
    
    // capture content as a HAR (HTTP Archive)
    // to process when test is complete
    proxyServer.enableHarCaptureTypes(CaptureType.REQUEST_CONTENT,CaptureType.RESPONSE_CONTENT);
    proxyServer.newHar();
    
    proxyConfig = ClientUtil.createSeleniumProxy(proxyServer);
    
    FirefoxOptions options = new FirefoxOptions();
    options.setProxy(proxyConfig);
    System.setProperty("webdriver.gecko.driver","C:\\Selenium\\webdrivers\\geckodriver.exe");
    driver = new FirefoxDriver(options);
}

@Test
public void captureTraffic() throws InterruptedException {
    driver.get("https://abc.xyz.com/login");
    
    final Har httpMessages = proxyServer.getHar();
    for(HarEntry httpMessage : httpMessages.getLog().getEntries()){
        String url = httpMessage.getRequest().getUrl();
        if (url.contains("en-us.json")) {

            // Get the response data from XHR request
            HarContent data = httpMessage.getResponse().getContent();
            if (data != null) {
                System.out.println("DATA>>>>>>>>>" + data.getText());
            }
        }
    }
}

@AfterClass
/***
 * 
 */
void teardown() {
    driver.quit();
    proxyServer.abort();
}

有人对我如何去做这件事有任何建议吗? 任何代码示例真的会很感激吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...