Виявляється, Selenium це набагато простіше ніж я думав. Щоб його встановити досить, як зазвичай написати
sudo pip install selenium
З читання раджу:
А зараз я спробую написати скрипт, який робить дві речі: залишає під цією публікацією коментар і перевіряє що на сторінці з’явився вміст цього коментаря… Такий собі тест-кейс:
from time import sleep
from getpass import getpass, getuser
from selenium import webdriver
def main():
user = raw_input('Wordpress.com username: ')
password = getpass('Password: ')
print 'Starting browser ...'
browser = webdriver.Firefox()
# browser.maximize_window()
login(browser, user, password)
print 'Opening page'
browser.get('http://bunyk.wordpress.com/2013/10/04/selenium-browser-automation/')
comment = 'Hello from selenium on {platform} with {name} {version}'.format(
platform=browser.capabilities['platform'],
name=browser.capabilities['browserName'],
version=browser.capabilities['version'],
)
add_comment(browser, comment)
assert comment in browser.page_source
print 'Closing browser'
browser.close()
def add_comment(browser, text):
print 'Filling comment field ...'
textarea = browser.find_element_by_xpath('//*[@id="comment"]')
textarea.clear()
textarea.click()
textarea.send_keys(text)
print 'Waiting till submit button slides down ...'
sleep(1)
print 'Submiting comment ...'
browser.find_element_by_xpath('//*[@id="comment-submit"]').click()
def login(browser, user, password):
print 'Logging in ...'
browser.get('http://%s.wordpress.com/wp-login.php' % user)
login = browser.find_element_by_xpath('//*[@id="user_login"]')
login.clear()
login.send_keys(user)
pwd = browser.find_element_by_xpath('//*[@id="user_pass"]')
pwd.clear()
pwd.send_keys(password)
browser.find_element_by_xpath('//*[@id="wp-submit"]').click()
print 'Login form submitted'
if __name__ == '__main__':
main()
Також мушу зауважити ще наступне. Firebug дуже допомагає при розробці, даючи нам xpath селектори потрібних елементів сторінки. Але, якщо ми наприклад працюємо з Ext.js, вона дає елементам дивні id на зразок DialogButton-1306-btnEl, де число змінюється випадковим чином. Тому треба писати не простий xpath, а хитро*зроблений:
# ok = browser.xpath('//*[@id="DialogButton-1306-btnEl"]')
ok = browser.xpath('//button[contains(., "OK")]')
P.S. Автоматизація це круто. Особливо автоматизація клацань мишкою… Хоча звісно буває не легко.
Filed under: Кодерство, Павутина Tagged: тестування, Python