有没有办法在 Selenium WebDriver 测试中添加标题?(就像 Firefox Modify Headers 插件一样)我不能使用 HtmlUnitDriver,因为浏览器必须是可见的。
问问题
13257 次
3 回答
3
WebDriver 不允许您使用任何基于浏览器的驱动程序更改或设置标头。您可以在以下 URL 找到很多关于他们对标头和响应代码的决定的信息。 http://code.google.com/p/selenium/issues/detail?id=141
我们使用 Apache HTTP 客户端进行这种类型的测试,我们不想检查呈现的页面元素,而只想检查响应和标题信息。
您还可以为您的 selenium 测试提供浏览器 mob 代理以及上面的 url 中提到的。我已经将它用于其他目的,它很棒。
于 2012-10-24T22:23:41.253 回答
0
有其他方法可以做到这一点Browsermob-Proxy
由于Browsermob-proxy
在我们处理 selenium 网格时有其自身的局限性,以下是我解决此问题的方法。希望对具有类似设置的任何人都有帮助。
- 将 ModHeader 扩展添加到 chrome 浏览器
如何下载 Modheader?关联
ChromeOptions options = new ChromeOptions();
options.addExtensions(new File(C://Downloads//modheader//modheader.crx));
// Set the Desired capabilities
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
// Instantiate the chrome driver with capabilities
WebDriver driver = new RemoteWebDriver(new URL(YOUR_HUB_URL), options);
- 转到浏览器扩展并捕获 ModHeader 的本地存储上下文 ID
- 导航到 ModHeader 的 URL 以设置本地存储上下文
.
// set the context on the extension so the localStorage can be accessed
driver.get("chrome-extension://idgpnmonknjnojddfkpgkljpfnnfcklj/_generated_background_page.html");
Where `idgpnmonknjnojddfkpgkljpfnnfcklj` is the value captured from the Step# 2
- 现在使用将标头添加到请求中
Javascript
.
((Javascript)driver).executeScript(
"localStorage.setItem('profiles', JSON.stringify([{ title: 'Selenium', hideComment: true, appendMode: '',
headers: [
{enabled: true, name: 'token-1', value: 'value-1', comment: ''},
{enabled: true, name: 'token-2', value: 'value-2', comment: ''}
],
respHeaders: [],
filters: []
}]));");
其中token-1
, value-1
, token-2
,value-2
是要添加的请求标头和值。
现在导航到所需的 Web 应用程序。
driver.get("your-desired-website");
于 2020-08-11T10:34:43.677 回答
0
下面是一个简短的例子,说明如何在 Python 中使用 Seleniumwire:
from seleniumwire import webdriver
def set_chrome_driver():
options = webdriver.ChromeOptions()
options.add_argument("--start-maximized")
options.add_argument("--disable-infobars")
options.add_argument("--no-proxy-server")
driver = webdriver.Chrome(executable_path=r'C:\Automation_package\chromedriver.exe')
driver.get('http://172.1.1.1:5000/path/api/')
driver.header_overrides = {"iv-user": "Admin", "iv-groups": "SuperAdmin", "iv-roles": "Viewers",}
driver.get('http://172.1.1.1:5000/path/api/')
于 2021-06-10T16:52:21.757 回答