我需要发送带有一些修改后的标头的Http请求。在尝试寻找与Selenium.addCustomRequestHeader
Selenium 2
的Selenium RC等效的方法几个小时后,我放弃了JavaScript并将其用于我的目的。我期望这会容易得多!
有人知道更好的方法吗?
这是我所做的:
var test = {
"sendHttpHeaders": function(dst, header1Name, header1Val, header2Name, header2Val) {
var http = new XMLHttpRequest();
http.open("GET", dst, "false");
http.setRequestHeader(header1Name,header1Val);
http.setRequestHeader(header2Name,header2Val);
http.send(null);
}
}
// ...
@Test
public void testFirstLogin() throws Exception {
WebDriver driver = new FirefoxDriver();
String url = System.getProperty(Constants.URL_PROPERTY_NAME);
driver.get(url);
// Using javascript to send http headers
String scriptResource = this.getClass().getPackage().getName()
.replace(".", "/") + "/javascript.js";
String script = getFromResource(scriptResource)
+ "test.sendHttpHeaders(\"" + url + "\", \"" + h1Name
+ "\", \"" + h1Val + "\", \"" + h2Name + "\", \"" + h2Val + "\");";
LOG.debug("script: " + script);
((JavascriptExecutor)driver).executeScript(loginScript);
// ...
}
// I don't like mixing js with my code. I've written this utility method to get
// the js from the classpath
/**
* @param src name of a resource that must be available from the classpath
* @return new string with the contents of the resource
* @throws IOException if resource not found
*/
public static String getFromResource(String src) throws IOException {
InputStream is = Thread.currentThread().getContextClassLoader().
getResourceAsStream(src);
if (null == is) {
throw new IOException("Resource " + src + " not found.");
}
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
String line = null;
int nLines = 0;
while (null != (line = br.readLine())) {
pw.println(line);
nLines ++;
}
LOG.info("Resource " + src + " successfully copied into String (" + nLines + " lines copied).");
return sw.toString();
}
// ...
注意:为了简化本文,我已经编辑了原始代码。希望我没有介绍任何错误!
不幸的是,您无法使用Selenium 2更改标头。这是团队方面的明智决定,因为我们正在尝试创建一个模拟用户可以执行的浏览器自动化框架。
问题内容: 我正在尝试使用Actions.sendKeys发送快捷方式,但是它不起作用。 问题答案: 您可以检查有关此问题的信息- 按下(Ctrl + A)SeleniumWebDriver 检查使用 和弦方法 的答案,您可以执行以下操作-
问题内容: 我有一个REST端点为: 当我尝试以以下方式访问时: 我的~/Downloads/cookies.txt位置: 服务器什么也没收到: 问题答案: 这为我工作: 我可以使用查看后端的值
问题内容: 我想通过Web应用程序将SMS发送到手机,可以吗?我该怎么做? 问题答案: 您可以使用此免费的Java示例程序使用连接到计算机的GSM调制解调器将PC上的SMS发送到COM端口。您还需要从Sun下载并安装Java comm api。 该程序需要以下Java文件才能运行。 SerialConnection.java(此文件用于从Java程序连接到COM端口) SerialConnecti
问题内容: 每次我运行测试的第一步时,都要登录,然后才进入所需的页面。如果运行此测试,则通常登录操作会花费很多时间。 如何通过登录操作? 使用Java语言的Chrome和Firefox驱动程序。 问题答案: 使用Java API 创建cookie ,如下所示: 使用Python API创建cookie ,如下所示:
问题内容: 因此,大约一个月前,我问了一个有关超级代理和发送文件的问题,但没有任何反应。我仍然喜欢找出使用超级代理的方法。 我可以使用纯Ajax发送文件: 但是,当我在超级代理中尝试相同的操作时,没有任何效果: 谁能告诉我发生了什么事。 问题答案: 这应该工作。
问题内容: 我想编写一个使用Python的smtplib发送电子邮件的程序。我搜索了文档和RFC,但找不到与附件相关的任何内容。因此,我确定我缺少一些更高层次的概念。有人可以告诉我附件在SMTP中的工作方式吗? 问题答案: 您要签出的是模块。它使您可以构建与MIME兼容的邮件,然后通过smtplib发送。
问题内容: 我有一个nodejs应用程序,它可以处理用户的请求并接收我要代理到内部API服务的cookie。如何通过使用节点获取来解决这个问题? 请不要提供超级代理。 问题答案: 您应该能够通过在请求的标头中设置cookie来传递cookie:
我正在使用django后端和CRAO前端。我将jwt刷新令牌保存为http仅cookie: 然后,为了刷新访问令牌,我发送了一个axios请求: 但是,在这种情况下,最初保存的cookie不会由axios发送。然而,在删除httponly属性后,cookies确实会被发送,并且一切正常。