<commit_before>
# Time Is All (log driven test engine)

----------------------------------

## Selenium WebDriver

GUI часть движка сделана на основе официального JS selenium-webdriver биндинга,
документация по JS Selenium тут:

http://seleniumhq.github.io/selenium/docs/api/javascript/index.html

Хорошо бы быть в курсе, что такое 

WebElement:

http://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/index_exports_WebElement.html

Actions:

http://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/actions_exports_ActionSequence.html

By

http://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/index_exports_By.html

until

http://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/until.html

chrome webdriver

http://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/chrome_exports_Driver.html

Key

http://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/index_exports_Key.html

Я буду стараться создавать разные обертки в API, чтобы тестерам не нужно было знать об этих объектах.
Но, пока для написания нетривиальных тестов эти знания могут понадобиться.
sel объект внутри теста, дает доступ к этим элементам Selenium (т.е. имеет одноименные свойства).

### Ворфлоу тестов с Selenium Webdriver

* Идешь на какой-то URL. (см. sel.get(url) ф-ю).
* Ждешь какого-то события: появления элемента, появления JS объекта,
появления нужного title страницы, и т.д. (см. sel.wait* ф-и)
* Ещё можно искать элемент без ожидания (если точно уверен, что элемент есть, иначе словишь exception).
  Лучше с ожиданием.
* Посылаешь в этот элемент всякие события от клавиатуры и мыши (sel.click*, sel.sendKeys*).
* Считываешь что-то из элемента.
* Считываешь что-то из JS переменных браузера. (см. sel.executeScript()).

### Замечания об ExtJs
<commit_msg>Added link to examples of pure selenium webdriver tests, i.e. without tia.<commit_after>
# Time Is All (log driven test engine)

----------------------------------

## Selenium WebDriver

GUI часть движка сделана на основе официального JS selenium-webdriver биндинга,
документация по JS Selenium тут:

http://seleniumhq.github.io/selenium/docs/api/javascript/index.html

Хорошо бы быть в курсе, что такое 

WebElement:

http://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/index_exports_WebElement.html

Actions:

http://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/actions_exports_ActionSequence.html

By

http://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/index_exports_By.html

until

http://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/until.html

chrome webdriver

http://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/chrome_exports_Driver.html

Key

http://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/index_exports_Key.html

После установки tia, в `tia/node_modules/selenium-webdriver/test` директории можно посмотреть примеры тестов на чистом selenium webdriver
(т.е. не через tia).

Я буду стараться создавать разные обертки в API, чтобы тестерам не нужно было знать об этих объектах.
Но, пока для написания нетривиальных тестов эти знания могут понадобиться.
sel объект внутри теста, дает доступ к этим элементам Selenium (т.е. имеет одноименные свойства).

### Ворфлоу тестов с Selenium Webdriver

* Идешь на какой-то URL. (см. sel.get(url) ф-ю).
* Ждешь какого-то события: появления элемента, появления JS объекта,
появления нужного title страницы, и т.д. (см. sel.wait* ф-и)
* Ещё можно искать элемент без ожидания (если точно уверен, что элемент есть, иначе словишь exception).
  Лучше с ожиданием.
* Посылаешь в этот элемент всякие события от клавиатуры и мыши (sel.click*, sel.sendKeys*).
* Считываешь что-то из элемента.
* Считываешь что-то из JS переменных браузера. (см. sel.executeScript()).

### Замечания об ExtJs

{'fraction_non_alphanumeric': 0.11047807778053009, 'fraction_numerical': 0.0, 'mean_word_length': 4.449392712550607, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '587468', 'n_tokens_mistral': 1571, 'n_tokens_neox': 1657, 'n_words': 351}