杂: 与后台联调的痛苦

今天与后台联调,很气人,我这边请求过去,一直返回400错误,想让后台看看,竟然不理人,卧槽,TMD。
这边项目比较赶,后台效率又低。我直接自己搭个服务器,然后让ios,android团队请求我的链接,
直接比对请求的内容, 发现多加了层括号。前端开发了解后台还是很有必要的。

phantomjs:连接拒绝 

1. phantomjs 调试本地都正常
2. phantomjs 调试网络请求, 都失败, log【TODO: 以后补充】

TODO: 以后编辑

1.  phantomjs 中网络请求 http://www.baidu.com  ,我在win7 上运行都正常, 在ubuntu 下死活不成功,

在vps上试了也ok

注: 最后ubuntu下成功了, 我做了两个操作(卸载vpn系统软件,重启软件)
1. 在ubuntu下,phantomjs调试不成功的时候,我一直以为是软件引起的问题,一直没想到是系统环境造成的(
我的网络都是正常的,都可以上网)
2. 还好后面用win7配置了相同软件,然后调试成功,才排除了软件问题
3. 再在vps下也配置了相同软件,也调试成功。
4. 好吧,肯定是ubuntu系统有点问题

hello.js 文件

var page = require(‘webpage’).create();
page.open(‘http://www.baidu.com’, function(status) {
console.log(“Status: ” + status);
if(status === “success”) {
//page.render(‘example.png’);
}
phantom.exit();
});

$phantomjs.exe hello.js

输出结果: Status: fail

注: bug 原因: 我以前在~/.bashrc 文件中设置了代理字段

#export http_proxy=http://127.0.0.1:8118/
#export https_proxy=http://127.0.0.1:8118/
#export ftp_proxy=http://127.0.0.1:8118/

直接屏蔽了 , 然后 source ~/.bashrc ,再运行前面的 hello.js ,就success 了。

python : 调用 shell , 与 shell 交互 

问:需求: python 调用 shell ,然后将输出结果赋值给 python 变量?
答: 使用subprocess

1. 例子
import subprocess
p = subprocess.Popen(‘ls’,stdout=subprocess.PIPE)
print p.stdout.readlines()

2. 
test.js  代码:

function sayHi(){
console.log(‘sayHi0—–()’)
}
sayHi();
phantom.exit();

python 代码 : 

def test_3():
import subprocess
p = subprocess.Popen(‘phantomjs test.js’,stdin=PIPE,stdout=PIPE,shell=True)
data = p.stdout.readlines();
print(data)

输出:[b’sayHi0—–()\n’]

参考:
http://blog.csdn.net/longerzone/article/details/17889969
http://blog.csdn.net/marising/article/details/6551692 【例子】

python 调用 javascript : python + Selenium + phantomjs

1 .

from selenium import webdriver

base_url = ‘http://www.baidu.com’
driver = webdriver.PhantomJS()
data = driver.find_element_by_id(‘cp’).text
print data
driver.get(base_url)
print(driver.current_url)
driver.quit()

输出:

©2015 Baidu 使用百度前必读 意见反馈 京ICP证030173号
https://www.baidu.com/

2. 通过javascript 给 控件设置 value, 好像获取不到? 【TODO】
3. 用数据库或者后台, 看看selenium+PhantomJS 是否有执行js文件?
答: 会执行js文件
4. 用js调用方法,返回的值,这个要保存在哪?

5. 参数的传递
参考:http://www.toolsqa.com/selenium-webdriver/testng-parameters-data-provider/

driver.findElement(By.id(“log”)).sendKeys(sUsername);
driver.findElement(By.id(“pwd”)).sendKeys(sPassword);
driver.findElement(By.id(“login”)).click();
driver.findElement(By.xpath(“.//*[@id=’account_logout’]/a”)).click();

6. xpath ??

7. 需要配合线程使用,防止阻塞主线程。

 

参考:http://blog.longc.wang/2015/02/18/using-phantomjs-and-selenium-to-crawl-website/
http://99jty.com/?p=1038

http://blog.chinaunix.net/uid-22414998-id-3692113.html

https://realpython.com/blog/python/headless-selenium-testing-with-python-and-phantomjs/

http://www.cnblogs.com/fnng/p/3238685.html

phantomjs : 安装

1. 安装 Selenium

pip install selenium

3.在ubuntu下 安装phantomjs 有三种方式

a) 在官网下载源码,然后自己编译

b)

sudo aptget install nodejslegacy
sudo aptget install npm
npm g install phantomjs
c)直接下载安装包 phantomjs-1.9.8-linux-x86_64.tar.bz2,解压开,配置一下
环境变量,直接使用   【正在使用】
下载地址: https://bitbucket.org/ariya/phantomjs/downloads
参考:http://stackoverflow.com/questions/8778513/how-can-i-setup-run-phantomjs-on-ubuntu
cd /usr/local/share
sudo wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-1.9.7-linux-x86_64.tar.bz2
sudo tar xjf phantomjs-1.9.7-linux-x86_64.tar.bz2
sudo ln -s /usr/local/share/phantomjs-1.9.7-linux-x86_64/bin/phantomjs /usr/local/share/phantomjs
sudo ln -s /usr/local/share/phantomjs-1.9.7-linux-x86_64/bin/phantomjs /usr/local/bin/phantomjs
sudo ln -s /usr/local/share/phantomjs-1.9.7-linux-x86_64/bin/phantomjs /usr/bin/phantomjs

And finally when I do

phantomjs -v

 

参考:http://phantomjs.org/quick-start.html 【官网】

http://stackoverflow.com/questions/13287490/is-there-a-way-to-use-phantomjs-in-python

http://eradman.com/posts/selenium-phantomjs.html

http://blog.longc.wang/2015/02/18/using-phantomjs-and-selenium-to-crawl-website/

 

pycharm : remote debug android remote ssh

1.

Selection_043

2.

py_interpreter_types

3.

Selection_045

 

注意 服务器路径 与 本地路径的映射

4.  Now I can【 right-click 】my project in the project view and select 【Upload to】:

flask9

 

 

 

 

 

 

 

 

 

 

 

5.

flask11

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6.
flask12

 

 

 

 

 

 

 

 

7.

flask13

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

参考: http://blog.jetbrains.com/pycharm/2015/03/feature-spotlight-python-remote-development-with-pycharm/

http://confluence.jetbrains.com/display/RUBYDEV/Configuring+Remote+Interpreters