C# 怎么通过坐标实现模拟点击WebBrowser里面的内容?
请大家先听我说,之所以这么做,是因为有的网站在连接代码上加了很多JS,而且连接是以iframe形式调用的,浏览器不可以跨域访问,所以我访问不到iframe里的代码,所以才...
请大家先听我说,之所以这么做,是因为有的网站在连接代码上加了很多JS,而且连接是以iframe形式调用的,浏览器不可以跨域访问,所以我访问不到iframe里的代码,所以才出现了这样的问题,模拟鼠标去点它,什么代码JS等的东西都会执行,因为跟鼠标点是一样,所以没事!
展开
1个回答
展开全部
最及至的方法
看你是用做bs的还是cs的但思路都一样,bs可能简单一点
通过WebRequest对象把远程的页面HTML代码获取过来,在加上自己的js脚本执行点击事件
然后创建WebBrowser对象,把获取过来的HTML加载到WebBrowser对象中让他执行
以下是一些思路代码,为你写的,记得加分
string url = this.TextBox.Text.Trim();
WebRequest request = WebRequest.Create(“远程页面地址”);
request.Credentials = CredentialCache.DefaultCredentials;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream stream = response.GetResponseStream();
StreamReader reader = new StreamReader(stream, Encoding.UTF8);
string html = reader.ReadToEnd();
reader.Close();
stream.Close();
response.Close();
html = GetHTMLBody(html);
//获取body内的内容,并把页面中的所有js脚本删除掉
private string GetHTMLBody(string html)
{
Regex rx;
string exp;
exp = @"<\s*body(.+?)<\s*/\s*body\s*>";
rx = new Regex(exp, RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.Singleline);
Match match = rx.Match(html);
if (!match.Success)
return "not match";
string result = match.Value;
exp = @"<\s*script(.+?)<\s*/\s*script\s*>";
rx = new Regex(exp, RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.Singleline);
result = rx.Replace(result, "");
//加上自己的执行脚本,可以自己写点击事件
result = @"<script type='text/javascript' src='jquery-1.7.min.js'></script>";
return result; //返回的内容是去掉头尾,去掉<script后的html代码,把他加到 WebBrowser对象中让他执行就行了。
}
看你是用做bs的还是cs的但思路都一样,bs可能简单一点
通过WebRequest对象把远程的页面HTML代码获取过来,在加上自己的js脚本执行点击事件
然后创建WebBrowser对象,把获取过来的HTML加载到WebBrowser对象中让他执行
以下是一些思路代码,为你写的,记得加分
string url = this.TextBox.Text.Trim();
WebRequest request = WebRequest.Create(“远程页面地址”);
request.Credentials = CredentialCache.DefaultCredentials;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream stream = response.GetResponseStream();
StreamReader reader = new StreamReader(stream, Encoding.UTF8);
string html = reader.ReadToEnd();
reader.Close();
stream.Close();
response.Close();
html = GetHTMLBody(html);
//获取body内的内容,并把页面中的所有js脚本删除掉
private string GetHTMLBody(string html)
{
Regex rx;
string exp;
exp = @"<\s*body(.+?)<\s*/\s*body\s*>";
rx = new Regex(exp, RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.Singleline);
Match match = rx.Match(html);
if (!match.Success)
return "not match";
string result = match.Value;
exp = @"<\s*script(.+?)<\s*/\s*script\s*>";
rx = new Regex(exp, RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.Singleline);
result = rx.Replace(result, "");
//加上自己的执行脚本,可以自己写点击事件
result = @"<script type='text/javascript' src='jquery-1.7.min.js'></script>";
return result; //返回的内容是去掉头尾,去掉<script后的html代码,把他加到 WebBrowser对象中让他执行就行了。
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询