>>> link = 'file.py?fname=a&lname=b&=c§=d<=e'
# escape for HTML
>>> import cgi
>>> cgi.escape(link)
'file.py?fname=a&jlname=b&amp=c&sect=d&lt=e'
# escape for URL
>>> import urllib.parse
>>> elink = urllib.parse.quote_plus(link)
>>> elink
'file.py%3Ffname%3Da%26lname%3Db%26amp%3Dc%26sect%3Dd%26lt%3De'
# URL satisfies HTML too: same
>>> cgi.escape(elink)
'file.py%3Ffname%3Da%26lname%3Db%26amp%3Dc%26sect%3Dd%26lt%3De'
Sunday, December 9, 2012
Safe escaping for HTML and URL
Monday, November 26, 2012
Configure vim for python
First important stuff after installation of ubuntu:
Good how-to in russian
sudo apt-get install vim python python-pip python-virtualenv git-core bash-completion
Create in a home directory config for vim $touch ~/.vimrc
or open global config to apply settings for all $sudo vim /etc/vim/vimrc
and add the following parameters to this files. autocmd FileType python set omnifunc=pythoncomplete#Complete
autocmd FileType javascript set omnifunc=javascriptcomplete#CompleteJS
autocmd FileType html set omnifunc=htmlcomplete#CompleteTags
autocmd FileType css set omnifunc=csscomplete#CompleteCSS
autocmd FileType xml set omnifunc=xmlcomplete#CompleteTags
autocmd FileType php set omnifunc=phpcomplete#CompletePHP
autocmd FileType c set omnifunc=ccomplete#Complete
Good how-to in russian
Monday, November 5, 2012
Selenium with python
First of all ensure that python is installed on your PC.
Or you can download it from python.org, use v.2.7.
On ubuntu just run the following commands in terminal:
python-2.7.3.msi
setuptools-0.6c11.win32-py2.7
Add PYTHONPATH to envirenmonet variables
If you want to write robust and maintainable test, you can use 'unittest' module with webdriver
For example:
Or you can download it from python.org, use v.2.7.
On ubuntu just run the following commands in terminal:
$sudo apt-get install python python-setuptools
$sudo easy_install pip
$pip install selenium
On windows install python and setup tools from windows installers: python-2.7.3.msi
setuptools-0.6c11.win32-py2.7
Add PYTHONPATH to envirenmonet variables
c:>easy_install pip
c:>pip install selenium
Run python interpreter and check that all stuff was installed correctly:
>python
>from selenium import webdriver #import selenium webdriver library
>browser = webdriver.Firefox() #start firefox
>browser.get('www.qa-notes.blogspot.com')
You can explore all available methods by using the following command interactively: >for method in dir(webdriver): print(method)
Then you can look at help by:
Selenium Python API here selenium-python API >help(webdriver.<methodname>)
If you want to write robust and maintainable test, you can use 'unittest' module with webdriver
For example:
import unittest
from selenium import webdriver
class firstTestSuiteTest(unittest.TestCase):
"""initialize some stuff here"""
def setUp(self):
self.browser = webdriver.Firefox()
"""clean some stuff here after each test"""
def tearDown(self):
self.browser.close()
"""each test methods' name should be start with 'test_'"""
def test_PasswordValidation(self):
browser = self.browser
browser.get(URL + 'sing-up')
pwdbox = browser.find_element_by_id('passord')
pwdbox.sendkeys(pwdGenerator())
pwd.click()
self.assertIn "Incorrect passowrd", errorMessage
suite1 = unittest.TestLoader().loadTestsFromTestCase(firstTestSuiteTest)
suite2 = ....
suiteN = ....
"""Prepare all suites all together"""
"""
To skip some tests use anotations before method definition, e.g
@unittest.skip("demonstrating skipping")
def test_ThisTestWillBeSkipped(self):
Blah Blah Blah
"""
fullTest = unittest.TestSuite([suite1, suite2, ..., suiteN])
unittest.TextTestRunner(verbosity=2).run(fullTest)
Tuesday, October 30, 2012
Selenium headless with python
Headless selenium. Will be useful to integrate with CI
Install virtual display and python wrapper for it:
Install virtual display and python wrapper for it:
$ sudo apt-get install xvfb xserver-xephyr
$ sudo pip install pyvirtualdisplay
Usage example: from pyvirtualdisplay import Display
from selenium import webdriver
"""visible=0, visible=1 for display or not virual display"""
display = Display(visible=0, size= (1024, 768))
display.start()
driver= webdriver.Chrome()
driver.get('http://www.qa-notes.blogspot.com')
print 'The title of current page is: ', driver.title
driver.quit()
display.stop()
Sunday, October 28, 2012
Saturday, October 27, 2012
Install Java in Ubuntu 12.04
If there is a problem with java in Ubuntu, remove previous version
$sudo apt-get purge openjdk*
add new repo and install Oracle Java 7
$sudo add-apt-repository ppa:webupd8team/java
$sudo apt-get update
$sudo apt-get install oracle-java7-installer
$sudo add-apt-repository ppa:webupd8team/java
$sudo apt-get update
$sudo apt-get install oracle-java7-installer
Sunday, October 14, 2012
Just for me
///////
$ echo 'Andrii The Great' | hexdump -Cv
00000000 41 6e 64 72 69 69 20 54 68 65 20 47 72 65 61 74 |Andrii The Great|
00000010 0a |.|
00000011
$ echo -e '\x41\x6e\x64\x72\x69\x69\x20\x54\x68\x65\x20\x47\x72\x65\x61\x74'
Andrii The Great
: if you have huge amount of hex data to convert to binary---you can use xxd utility (part of vim package).
$ echo -e $( echo "30 31 323334 35 " | sed 's/ //g; s/../\\x&/g' )
////////
$ echo 'Andrii The Great' | hexdump -Cv
00000000 41 6e 64 72 69 69 20 54 68 65 20 47 72 65 61 74 |Andrii The Great|
00000010 0a |.|
00000011
$ echo -e '\x41\x6e\x64\x72\x69\x69\x20\x54\x68\x65\x20\x47\x72\x65\x61\x74'
Andrii The Great
: if you have huge amount of hex data to convert to binary---you can use xxd utility (part of vim package).
$ echo -e $( echo "30 31 323334 35 " | sed 's/ //g; s/../\\x&/g' )
////////
WPA Suplicant How to
wpa_supplicant short guide
1. Download last stable supplicant from http://hostap.epitest.fi/wpa_supplicant/
2. Install libssl-dev, if it wasn’t installed
3. Install wpa-gui
On Debian-based:
sudo apt-get install wpagui
4. Backup your /etc/resolv.conf
cp /etc/resolv.conf/etc/resolv.conf.old
5. Stop your systems network-manager, to stop wpa_supplicant
sudo invoke-rc.d network-manager stop
6. Restore your /etc/resolv.conf from backup mv /etc/resolv.conf.old/etc/resolv.conf
7. Create or edit your wpa_supplicant.conf, example, which is working for me:
cat /etc/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=users
8. Go to wpa_supplicant directory and create a config file:
cd wpa_supplicant-0.7.3/wpa_supplicant/
cp defconfig .config
9. Enable WPS support by editing .config file
cd wpa_supplicant-0.7.3/wpa_supplicant/
vim ./config
uncomment the following line:
CONFIG_WPS=y
9. Build supplicant, which was downloaded
cd wpa_supplicant-0.7.3/wpa_supplicant/
make
10. Start your supplicant
sudo ./wpa_supplicant -i<wireless interface> -c/etc/wpa_supplicant.conf -d
11. Start your wpa_cli
sudo ./wpa_cli -p /var/run/wpa_supplicant -i <wireless interface>
Performing WPS using wpa_cli
1. Initiate scan in wpa_cli:
In wpa_cli console type:
>scan
to show scan results:
>scan_result
2. WPS-PIN
In wpa_cli console type:
>wps_pin <BSSID> <PIN>
3. WPS-PBC
In wpa_cli console type:
>wps_pbc <BSSID>
wpa_cli will ensure you that client is connected.
By the way, use help:
>help
Performing WPS using wpa_gui
1. Start wpa_gui
Alt+F2 ---> gksu wpa_gui
2. Choose WPS tab
3. Press “Generate PIN” button
4. Copy generated PIN to yours device WEB gui and start WPS.
5. Ensure that your client is connected.
Have fun!:)
1. Download last stable supplicant from http://hostap.epitest.fi/wpa_supplicant/
2. Install libssl-dev, if it wasn’t installed
3. Install wpa-gui
On Debian-based:
sudo apt-get install wpagui
4. Backup your /etc/resolv.conf
cp /etc/resolv.conf/etc/resolv.conf.old
5. Stop your systems network-manager, to stop wpa_supplicant
sudo invoke-rc.d network-manager stop
6. Restore your /etc/resolv.conf from backup mv /etc/resolv.conf.old/etc/resolv.conf
7. Create or edit your wpa_supplicant.conf, example, which is working for me:
cat /etc/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=users
8. Go to wpa_supplicant directory and create a config file:
cd wpa_supplicant-0.7.3/wpa_supplicant/
cp defconfig .config
9. Enable WPS support by editing .config file
cd wpa_supplicant-0.7.3/wpa_supplicant/
vim ./config
uncomment the following line:
CONFIG_WPS=y
9. Build supplicant, which was downloaded
cd wpa_supplicant-0.7.3/wpa_supplicant/
make
10. Start your supplicant
sudo ./wpa_supplicant -i<wireless interface> -c/etc/wpa_supplicant.conf -d
11. Start your wpa_cli
sudo ./wpa_cli -p /var/run/wpa_supplicant -i <wireless interface>
Performing WPS using wpa_cli
1. Initiate scan in wpa_cli:
In wpa_cli console type:
>scan
to show scan results:
>scan_result
2. WPS-PIN
In wpa_cli console type:
>wps_pin <BSSID> <PIN>
3. WPS-PBC
In wpa_cli console type:
>wps_pbc <BSSID>
wpa_cli will ensure you that client is connected.
By the way, use help:
>help
Performing WPS using wpa_gui
1. Start wpa_gui
Alt+F2 ---> gksu wpa_gui
2. Choose WPS tab
3. Press “Generate PIN” button
4. Copy generated PIN to yours device WEB gui and start WPS.
5. Ensure that your client is connected.
Have fun!:)
Saturday, October 13, 2012
Ubuntu: tkinter for python3
sudo apt-get install python3.2 python*3*-tk
Friday, August 24, 2012
xpath usage \ шпаргалка по работае с xpath
// Get all elements that equal the string cat String xpath = "//*[.='cat']"; // 2 6 // Get all elements that equal the string dog xpath = "//*[.='dog']"; // (none) // Note that element #3 does not match because its // content is " dog " rather than "dog" // Get all elements that contain the string cat xpath = "//*[contains(.,'cat')]"; // 1 2 4 5 6 // Get all elem3 elements that contain the string cat xpath = "//elem3[contains(.,'cat')]"; // 6 // Get all elements that contain the string cat, // ignoring the contents of any subelements xpath = "//*[contains(child::text(),'cat')]"; // 2 4 6 // Get all elements without subelements and whose contents contains the string cat xpath = "//*[count(*)=0 and contains(.,'cat')]"; // 2 6
// Get all elements that contain the string cat, ignoring case xpath = "//*[contains(translate(.,'abcdefghijklmnopqrstuvwxyz'," + " 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'),'CAT')]"; // 1 2 4 5 6 7
Source: http://www.exampledepot.com/egs/org.w3c.dom/xpath_GetElemByText.html
Thursday, July 19, 2012
Selenium and Python заметки
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
driver.find_element_by_id('locator') или driver.find_element(By.NAME, value="locator")
второй вариант в некоторых случаях более удобен и универсален.
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
driver.find_element_by_id('locator') или driver.find_element(By.NAME, value="locator")
второй вариант в некоторых случаях более удобен и универсален.
from whrandom import choice import string def GenPasswd(): chars = string.letters + string.digits for i in range(8): newpasswd = newpasswd + choice(chars) return newpasswd def GenPasswd2(length=8, chars=string.letters + string.digits): return ''.join([choice(chars) for i in range(length)])
Thursday, May 24, 2012
Send email via python
Иногда появляется необходимость, чтобы автоматически приходил простой гугловый имейл по какому-либо событию, мне нужно было, чтобы по результату теста. Немного поиска и нашел решение. В python есть замечательная библиотека smtplib, которая в несколько строк помогает решить задачу. Можно сделать более удобно, добавить вложения c логами, но на данный момент мне этого было достаточно.
import smtplib
msg=""
subject = ""
def sendanemail(subj, message):
sender = 'sendername@gmail.com'
clientadderss = 'clientaddress@gmail.com'
sendername = 'sendername'
password = 'password'
server = smtplib.SMTP('smtp.gmail.com:587')
server.starttls()
subject = subj
msg = "" + msg + ""
server.login(sendername,password)
headers = ["From: " + sender,
"Subject: " + subject,
"To: " + clientadderss,
"MIME-Version: 1.0",
"Content-Type: text/html"]
headers = "\r\n".join(headers)
server.sendmail(sender, clientadderss, headers + "\r\n\r\n" + msg)
server.quit()
subject = "test message with Python"
msg = "Epic fail:)"
if testfail:
sendanemail(msg)
Friday, May 18, 2012
Ubuntu 12.04 Restore Grub
Вообщем обновлялся с флешки на новую убунту с многолетней поддержкой, и вспешке убил загрузчик. А точнее поставил его на флешку. Конечно хорошо, ноут загружается только если есть флешка, но как-то неудобно.
По быстрому проблема решилась с помощью утилиты boot-repair.
sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt-get update
sudo apt-get install -y boot-repair
Подходит для Ubuntu 10.04/10.10/11.04/11.10/12.04
По быстрому проблема решилась с помощью утилиты boot-repair.
sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt-get update
sudo apt-get install -y boot-repair
Подходит для Ubuntu 10.04/10.10/11.04/11.10/12.04
Linux partition auto mount
Для начала узнать раздел диска, котрый хотим монтировать. Это можно сделать с помощью команды:
sudo fdisk -l
По размеру вижу, что мне нужен раздел sda6.
Создаём каталог, куда по умолчанию будет монтироваться этот раздел
sudo mkdir /lnxdata
Нельзя забыть дать вменямые права на этот каталог:
sudo chown -R usename:username /lnxdata
sudo chmod -R 755 /lnxdata
Получаем индентификатор необходимого нам раздела. Он нужен для того чтобы задать в настройках конфигурационного файла fstab:
ls -l /dev/disk/by-uuid

Далее добавляем в файл конфигурации строку с параметрами раздела, котрый будет всегда монтироваться при загрузке системы:
sudo nano /etc/fstab

Чтобы не перезагуражться можно проверить проделанные действия командой sudo mount -a
И команда sudo df -h выведен все смонтированные разделы.
P.s. Если необходимо изменить разметку диска, можно воспользоваться утилитой gparted
sudo apt-get install gparted
sudo fdisk -l
По размеру вижу, что мне нужен раздел sda6.
Создаём каталог, куда по умолчанию будет монтироваться этот раздел
sudo mkdir /lnxdata
Нельзя забыть дать вменямые права на этот каталог:
sudo chown -R usename:username /lnxdata
sudo chmod -R 755 /lnxdata
Получаем индентификатор необходимого нам раздела. Он нужен для того чтобы задать в настройках конфигурационного файла fstab:
ls -l /dev/disk/by-uuid
Далее добавляем в файл конфигурации строку с параметрами раздела, котрый будет всегда монтироваться при загрузке системы:
sudo nano /etc/fstab
Чтобы не перезагуражться можно проверить проделанные действия командой sudo mount -a
И команда sudo df -h выведен все смонтированные разделы.
P.s. Если необходимо изменить разметку диска, можно воспользоваться утилитой gparted
sudo apt-get install gparted
Subscribe to:
Comments (Atom)