我正在尝试使用Selenium获取页面源代码,代码是通用SOP。这对百度来说是可行的。com和示例。通用域名格式。但说到我真正需要的URL,我得到了一个空页面。源代码只显示空标记,如下代码所示。我遗漏了什么吗?
我试图增加更多的选项,但似乎没有帮助
网络驱动程序;
System.setProperty("webdriver.chrome.driver", "E:\\applications\\ChromeDriver\\chromedriver_win32 (2)//chromedriver.exe");
// 实例化一个WebDriver的对象 作用:启动谷歌浏览器
driver = new ChromeDriver();
driver.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);
driver.get("http://rd.huangpuqu.sh.cn/website/html/shprd/shprd_tpxw/List/list_0.htm");
String pageSource = driver.getPageSource();
String title = driver.getTitle();
System.out.println("==========="+title+"==============");
System.out.println(Jsoup.parse(pageSource));
我期望URL的解析页面源,这样我就可以得到我需要的信息。但我被困在这里了。
首先,这肯定是一个可兼容性问题。这主要是因为硒——它已经经历了大量的开发,因此,关于版本兼容性的大量问题。以下是我最终处理这个问题的方式。
我选择了Firefox浏览器驱动,版本是67.0(64位)
。Cos Chrome将以@Adi Ohana提到的空白结果进行响应。我在3的版本中使用了Selenium。X.使用硒3。十、 我在pom中添加了以下代码。xml:
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-server</artifactId>
<version>3.141.59</version> <!-- this version context matters -->
</dependency>
注意,这是<代码>
完成这些后,你需要一个合适的司机。firefox的驱动程序名为geckodriver。我用v0。24.0版本,这是一个。exe文件比。jar,以便在编程中通过java代码指定它,如下所示:
System.setProperty("webdriver.gecko.driver","E:\\applications\\GeckoDriver-v0.24.0-win64\\geckodriver.exe"); // 0.24.0 the 2nd param is the location of geckodriver.exe in your local computer
然后,发送URL请求。由于主体内容是由另一个AJAX请求加载的。你需要等几秒钟,让Selenium来做这件事。
Thread.sleep(5000); // this is the easyest way, may not the best though.
结论:我得到了我预期的原始源代码,但我没有解决为什么googleDriver不能按预期工作的问题。我可能会把这个留给进一步的挖掘。
总结一下:Firefox 67.0 geckoDrive v0.24.0[由java代码分割]Selenium 3. X[由xml-code添加]
谢谢你们,真的很有帮助。就像这个社区
附言:我不太会使用stackoverflow。还在学习诀窍。。。
当我使用ChromeDriver时,我可以在这个网站上重现这个问题。我发现有一个JS检测到你正在使用ChromeDriver,并用400个HTTP错误代码阻止了对网页的请求:
现在,Firefox正在按预期使用以下代码:
FirefoxDriver driver = new FirefoxDriver();
driver.get("http://rd.huangpuqu.sh.cn/website/html/shprd/shprd_tpxw/List/list_0.htm");
Thread.sleep(5000);
String pageSource = driver.getPageSource();
String title = driver.getTitle();
System.out.println("==========="+title+"==============");
System.out.println(Jsoup.parse(pageSource));
driver.quit();
我只睡了5秒钟,效果很好。最佳实践是等待页面中的特定元素,请检查此项以供参考-如何等待元素出现在Selenium中?
firefox浏览器版本:67.0.1 geckodriver 0.24.0 selenium版本:3.141.59
<?php $http = HttpRequest::newSession(); $response = $http->get('http://www.baidu.com/'); $content = $response->body(); // 网页源码
在C:\用户\戴尔\桌面\项目\my-app中创建新的React应用。 安装包。这可能需要几分钟。使用cra模板安装反应、反应-多姆和反应-脚本... NPM ERR!最大调用堆栈大小超过npm ERR!超出最大调用堆栈大小 NPM ERR!此运行的完整日志可以在npm ERR中找到!C:\用户\戴尔\AppData\漫游\npmcache_logs\2020-09-05T07_43_27_276
这里是我的错误: java.lang.NullPointerException位于com.insuranceplanes.testcases.loginpageTest.TearDown(loginpageTest.java:48)位于java.base/jdk.internal.reflect.nativeMethodAccessorImpl.Invoke0(原生方法)位于java.base/j
问题内容: 我们如何获得使用Selenium WebDriver加载页面的准确时间? 我们使用Thread.sleep 我们隐式使用 我们使用WebDriverWait 但是我们如何获得使用Selenium WebDriver加载页面的准确时间呢? 问题答案: 如果您尝试找出使用Selenium WebDriver(又名Selenium 2)完全加载页面需要多少时间。 通常,仅在页面完全加载后,W
我试图在数据库中的CLOB类型列中插入一个很长的字符串,它基本上是一个base64编码的图像字符串,但我得到了异常java.sql.sqlsyntaxerroreXception。做这件事的正确方法是什么? 我尝试了setClob()中的Clob对象和setClob()中的reader对象,但给出了相同的异常“java.sql.sqlsyntaxerrorexception”,并且我将OJDBC1