我写在C#中的硒实用程序来帮助自动化测试。 我可能失去了一些东西完全明显,但为什么它,如果我发送的HttpWebRequest开了一个服务器并检索响应流,我结束了多源(硒即更可映射WebElements),比我拿到的时候我右点击 - 查看页面源在我的浏览器?
这意味着,我映射中硒司机找不到来运行的元素。
我如此混淆:S
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse res = (HttpWebResponse)req.GetResponse();
StreamReader sr = new StreamReader(res.GetResponseStream());
var src = sr.ReadToEnd();
有许多的可能性。 一个可能的罪魁祸首是在你向服务器发送的信息的差异。 浏览器通常发送各种头,饼干等,在Web请求没有,除非你明确地添加它。
例如,当我打www.google.com使用网络浏览器,我得到的东西,从谷歌加,我也得到了高档的体验,因为我对常绿浏览器。 大约139000个字符出现在我查看源代码页。
然而,当我做一个Web请求相同的URL(使用下面的代码),我只得到45000在响应流中的字符:
async void Main()
{
var result = await GetTextAsync("https://www.google.com");
Console.Write(result.Length);
}
public async Task<string> GetTextAsync(string url){
var result = await WebRequest.Create(url).GetResponseAsync();
using (var stream = result.GetResponseStream())
using (var reader = new StreamReader(stream))
{
return await reader.ReadToEndAsync();
}
}
我猜想,如果我设置的WebRequest发送所有相同的cookie和头Chrome浏览器在发送给谷歌,我的成绩会更相似。