Javascript Polly.js+;selenium webdriver:如何存根/截获XHR请求

Javascript Polly.js+;selenium webdriver:如何存根/截获XHR请求,javascript,selenium-webdriver,xmlhttprequest,stub,stubbing,Javascript,Selenium Webdriver,Xmlhttprequest,Stub,Stubbing,我正在为react应用程序运行selenium测试,并尝试存根我的(XHR)请求。我想我很接近,但好像少了什么。我正在运行polly l-监听localhost:3000-然后我的测试如下所示: import { Polly } from '@pollyjs/core' import XHRAdapter from '@pollyjs/adapter-xhr' import LocalStoragePersister from '@pollyjs/persister-local-storage'

我正在为react应用程序运行selenium测试,并尝试存根我的(XHR)请求。我想我很接近,但好像少了什么。我正在运行
polly l
-监听
localhost:3000
-然后我的测试如下所示:

import { Polly } from '@pollyjs/core'
import XHRAdapter from '@pollyjs/adapter-xhr'
import LocalStoragePersister from '@pollyjs/persister-local-storage';
import webdriver from 'selenium-webdriver'
const { By, Key, until } = webdriver

Polly.register(XHRAdapter)
Polly.register(LocalStoragePersister);

describe('Loggin in', () => {

  const polly = new Polly('Sign In', {
    adapters: ['xhr'],
    persister: 'local-storage'
  });
  const { server } = polly;

  polly.configure({
    persisterOptions: {
      'local-storage': {
        key: '__pollyjs__'
      }
    }
  });

  server.get("http://localhost:3000/dashboard").passthrough()

  server.get('http://localhost:3000/api/users/me').intercept((req, res) => {
    res.status(200);
    res.json({});
  });
  server.put('http://localhost:3000/api/users/login').intercept((req, res) => {
    res.status(200);
    res.json({});
  });


  it('renders correctly', async() => {
    var chromeCapabilities = webdriver.Capabilities.chrome();
    var chromeOptions = {
      //'args': ['--headless']
      'args': ['--auto-open-devtools-for-tabs']
    };
    chromeCapabilities.set('chromeOptions', chromeOptions);
    const driver = new webdriver.Builder().withCapabilities(chromeCapabilities).build();

    jasmine.Ajax.stubRequest('/dashboard').andReturn({
      "status": 200
    });

    await driver.get('http://localhost:3000/dashboard')

    await driver.getCurrentUrl().then((url) => {
      expect(url).toEqual("http://localhost:3000/dashboard")
    })

    await polly.stop();
    driver.quit()
  })

})
所以这里的想法是“/dashboard”应该被传递,而不是被截获,而api请求(
/api/users/me
/api/users/login
)应该被polly截短。当我在仪表板上着陆时,我得到了一个404,而波利似乎根本没有通过。我完全弄错了吗


无法获取/dashboard

您是否解决了此问题?我正在尝试存根一个外部api调用,但在polly打印的HAR文件中没有看到它。我确实看到了webdriver的请求……我认为现在的情况是,您需要在正在测试的自动浏览器和internet之间设置一个代理,然后您可以捕获所有进出实际浏览器的流量。使用polly.js,您可以存根/监视在测试中显式发出的网络请求。