我正在使用以下基于loadspeed.js示例的代码打开一个https://站点,该站点也需要http服务器身份验证.
var page = require('webpage').create(), system = require('system'), t, address;
page.settings.userName = 'myusername';
page.settings.password = 'mypassword';
if (system.args.length === 1) {
console.log('Usage: scrape.js <some URL>');
phantom.exit();
} else {
t = Date.now();
address = system.args[1];
page.open(address, function (status) {
if (status !== 'success') {
console.log('FAIL to load the address');
} else {
t = Date.now() - t;
console.log('Page title is ' + page.evaluate(function () {
return document.title;
}));
console.log('Loading time ' + t + ' msec');
}
phantom.exit();
});
} …Run Code Online (Sandbox Code Playgroud) 我有一个webBrowser,以及Visual Studio中的标签,基本上我要做的是从另一个网页抓取一个部分.
我尝试使用WebClient.DownloadString和WebClient.DownloadFile,在javascript加载内容之前,他们都给了我网页的源代码.我的下一个想法是使用WebBrowser工具,只是在页面加载后调用webBrowser.DocumentText并且不起作用,它仍然提供了页面的原始来源.
有没有办法可以抓住javascriptload后的页面?
这是我试图抓的页面.
http://www.regulations.gov/#!documentDetail;D=APHIS-2013-0013-0083
我需要从该页面获取评论,该页面是生成的.
以下是我的开发环境的详细信息:
-Visual Studio 2012 Ultimate与更新4
-Google Chrome版本40.0.2214.94 m
-Windows 7 Professional,具有32位操作系统
我的Google Chrome浏览器的用户代理字符串是:
Mozilla/5.0(Windows NT 6.1)AppleWebKit/537.36(KHTML,与Gecko一样)Chrome/40.0.2214.94 Safari/537.36
我的Automated UI测试代码中的C#代码如下:
var options = new PhantomJSOptions();
// Chrome User Agent ( Chrome Version 40.0.2214.94 m )
options.AddAdditionalCapability("phantomjs.page.settings.userAgent", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.94 Safari/537.36");
driver = new OpenQA.Selenium.PhantomJS.PhantomJSDriver(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"..\..\..\packages\PhantomJS.1.9.8\tools\phantomjs"), options);
url = new Uri("http://localhost:2816/");
IWait<IWebDriver> wait = new OpenQA.Selenium.Support.UI.WebDriverWait(driver, TimeSpan.FromSeconds(90.00));
wait.Until(ExpectedConditions.ElementIsClickable( By.XPath("//a[text()='Users']")));
IWebElement btn = waitArg.Until<IWebElement>((d) => {
try{
return d.FindElement( By.XPath("//a[text()='Users']") );
}
catch {
return null;
} …Run Code Online (Sandbox Code Playgroud)