Htmlunit,jpype,selenium,selenium-server are all shit


跟着导师做项目,导师想起一出是一出的真是醉了,我只吐一吐槽。

导师拿了一个利用了w3af但自己重新改过的一个开源项目的代码交给我们,说借鉴他们改写w3af的成果,将自己的前端和他们的审计插件结合起来,好,听起来不是很难,那我们就开始好了。

拿到代码一看真是呵呵了,大部分的代码其实跟我们都没半毛钱关系,但最有关系的那部分,插件的初始化和爬虫部分,竟然调的htmlunit这个第三方jar包。Ohshitpythonjava要怎么来调!!我们先来解决htmlunit是个什么东西的问题。查资料说大概可以认为htmlunit是个无界面的浏览器,特点是速度很快,使用方便,而且能够应付javascriptAjax,听起来很不错,好吧,那我就留着你吧。接下来想怎么实现pythonjava对接,于是就找到了jpypeJpype是什么呢,就是pythonjava对接的接口,jpype实现了数据类型,对象调用,线程调度等差异的转化问题,看样子貌似问题很快就会被解决。等等,先别高兴太早。

一开始没找到jpypeubuntu下的安装方法被老师熊了一顿,安装方法:

sudo apt-get install python-jpype

对,我就是这么丢人!

#!/usr/bin/env python  
#coding : utf-8  
  
from jpype import *  
  
jvmpath = getDefaultJVMPath()  
startJVM(jvmpath, "-ea", "-Djava.class.path=.")  
TA = JPackage('test').TestApi  
jd = TA()  
jd.printData('1234')  
s = jd.getData('a')  
print s  
shutdownJVM();  


传说这就是调用第三方jar的方法,可我就卡在那个JPackage上,怎么写路径就是找不到htmlunitwebclientohshit,我也是醉了。

神奇的老师于是随手甩给我了一个网址:http://sunjun041640.blog.163.com/blog/static/2562683220131024114610625/

说这个可以把jpype甩开,因为selenium是封装好的可以自己调htmlunit,于是我又乐呵呵的扔掉jpype钻进了selenium的怀抱。等等,这个selenium是干嘛的,其实是一个高度封装了的可以召唤各种浏览器的神器。借助它貌似就可以调到htmlunit了。Ubuntu安装:

$sudo pip install -U selenium

貌似很简单嘛,找段初始化的代码调试下:


from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.keys import Keys
import time
browser = webdriver.Firefox() # Get local session of firefox
browser.get("http://www.yahoo.com") # Load page
assert "Yahoo!" in browser.title
elem = browser.find_element_by_name("p") # Find the query box
elem.send_keys("seleniumhq" + Keys.RETURN)time.sleep(0.2) # Let the page load, will be added to the APItry:    browser.find_element_by_xpath("//a[contains(@href,'http://seleniumhq.org')]")
except NoSuchElementException:    
assert 0, "can't find seleniumhq"browser.close()



嗯,跑起来还不错的样子,调了一个fireworf浏览器出来,查询了代码里的信息。下面试一下htmlunit能不能调到:

from selenium import webdriver
From selenium.webdriver.common.desired_capabilities import DesiredCapabilities   
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.keys import Keys
import time
 
 
browser = webdriver.Remote(desired_capabilities=DesiredCapabilities.HTMLUNIT)     
#browser = webdriver.DesiredCapabilities.HTMLUNIT() # Get local session of firefox
browser.get("http://www.yahoo.com") # Load page
assert "Yahoo" in browser.title
elem = browser.find_element_by_name("p") # Find the query box
elem.send_keys("seleniumhq" + Keys.RETURN)
time.sleep(0.2) # Let the page load, will be added to the API
try:
    browser.find_element_by_xpath("//a[@data-bk='5174.1']")
    print"ok"
except NoSuchElementException:
    assert 0, "can't find seleniumhq"
browser.close() 


Ohshit这个就不行了,百度一下(Google有时能用有事不能用真是蛋疼)说remote是远程调用还要下个jar包的server,那我就下吧。csdn下了一个,妈蛋invalid jar,我以为是我电脑的问题,结果第二天下了个新的jar就没问题了让我去死好吧。

ubuntu下切到server jar的目录下,启动server命令,

java -jar selenium-server.jar

然后再跑上面的程序,按理说不会有问题了应该可以正常使用了。可我的server里报错了哦,shit

Google打不开我猜可能因为我的网就是连不到Google,百度报css的错我猜是在读百度的网站读的有问题。跟老师沟通完老师坚定的说,放弃selenium吧,问我有没有别的方法,我说python有个自带的urllib库可以用,就是功能不知道够不够。

老师说那就urllib。然后就走人了。没一会发QQ来了,继续用htmlunit,学姐用selenium调通了。

我真想一口鲜血喷屏幕上!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值