понедельник, 28 ноября 2016 г.

UNIX, AQA: Как удалить файлы из списка?

Команда rm не принимает перенаправление ввода, поэтому rm < files-to-remove.txt работать не будет.
Можно использовать:
  1. rm `cat files-to-remove.txt`
  2. xargs rm < files-to-remove.txt
  3. Небольшой скрипт:
    foreach i (`cat files-to-remove.txt`)
    rm $i
    end
Аналогично можно удалить файлы, отобранные командой grep:
rm `ls | grep 123`

источник: 

Life:

------------------------------------------------------------------------------------------------------------------
TC: установить плагин на Total Commander;
TC: плагин 32х требует ТС 32х скачать тут;

1. Скопировать архив плагина Script Content Plugin;
2. Установить плагин (читай справку TC - "Тематические обзоры\Плагины и языки", раздел "Как установить плагин") .
3. В папке установленного плагина открыть на редактирование файл script.ini. Заменить его содержимое приведенным текстом. 


Код:
[Script]
Section=General

[General]
LongName=0
ParseDirs=1
Script=General.vbs
4. В папке установленного плагина создать текстовый файл General.vbs с приведенным  текстом. 



Код:
'============================
' Колонка Result будет возвращать признак наличия файла\каталога в указанном файле-списке:
'   0 - файл\каталог НЕ найден; 1 - файл\каталог найден
'=== Изменяемые параметры ===
Const FileList = "C:\FileList.txt" 'Файл-список
'============================

Dim FSO, List, QuitFlag
Const ForReading = 1
Set FSO = CreateObject("Scripting.FileSystemObject")

QuitFlag = False
content  = 0

If Not FSO.FileExists(FileList) Then
  Quit
End If

If Not QuitFlag Then
  On Error Resume Next
  List = FSO.OpenTextFile(FileList, ForReading, False).ReadAll
  If Err.Number <> 0 Then
    Quit
  End If
  On Error GoTo 0
End If

If Not QuitFlag Then
  If InStr(1, vbNewLine & List & vbNewLine, vbNewLine & filename & vbNewLine, vbTextCompare) > 0 Then
    content = 1
  End If
End If

Quit

Sub Quit
  QuitFlag = True
  Set FSO  = Nothing
End Sub

5. Создать файл "C:\FileList.txt" со списком файлов (твои "40шт"). Имя и размещение этого файла-списка может быть любым, но тогда в файле General.vbs необходимо соответствующим образом изменить строку 
6. Запустить поиск (Alt+F7).
7. Перейти на закладку "Плагины".
8. Установить галочку "Поиск с плагинами".
9. В поле "Плагин:" выбрать "script".
10. Поле "Свойство:" = "Result".
11. "Операция:" = "содержит".
12. "Значение:" = "1".
13. Нажать "Начать поиск".
14. Радоваться найденным файлам.


источник 


пятница, 25 ноября 2016 г.

SQL Oracle: Tips&Tricks

How to know which version of DB is used? 
   select * from v$version
 
Pagination on Oracle by RowNum
link on oracle 
 
Examples: worked query
SELECT PGM_META_ID
            FROM 
              (select a.*, rownum rnum
                FROM
                  (select * from
                  PGM_EPISODEINFO
                  WHERE  EPISODE_TITLE is null) a
                WHERE rownum <= 150
              )
            WHERE rnum >= 148
... in progress (not work)...
select * FROM ID_MAP WHERE PGM_META_ID in         
  (SELECT PGM_META_ID
            FROM 
              (select a.*, rownum rnum
                FROM
                  (select * from
                  PGM_EPISODEINFO
                  WHERE  EPISODE_TITLE is null) a
                WHERE rownum <= 150
              )
            WHERE rnum >= 148);
     
 
 

вторник, 15 ноября 2016 г.

AQA. Введение в XPath (часть 2). Основы построения запросов

Где при тестировании может понадобиться XPath, а также обзор инструментальных средств для отладки XPath-запросов можно найти в предыдущей статье. Что же представляет из себя xpath-запрос? XPath (XML Path Language) — язык запросов к элементам XML или XHTML документа. XML имеет древовидную структуру. В документе всегда имеется корневой элемент. У элемента дерева всегда существуют предки (исключение — корневой элемент, у которого предков нет) и могут существовать потомки. Каждый элемент дерева находится на определенном уровне вложенности. У элементов на одном уровне бывают предыдущие и следующие за ним элементы. Строка XPath — это фактически путь к элементу в дереве, где каждый уровень разделяется косой чертой «/». В результате обработки выражения XPath получается объект, который может быть: набор узлов (node-set) — неупорядоченный набор узлов без дубликатов булево значение (boolean) — true или false число (number) — число с плавающей точкой строка (string) — последовательность UCS символов Небольшой примерчик для старта:
* — обозначает любое имя или набор символов / — определяет уровень дерева Если в запросе первым символом стоит «/» , то путь адресации считается абсолютным (то есть от корня документа). Корень документа всегда является контекстом по умолчанию. Контекст — это текущий полученный узел или набор узлов, относительно которых рассчитывается следующий шаг. Оси Оси это основа запросов XPath и их обязательная часть. ancestor:: — возвращает множество предков. ancestor-or-self:: — возвращает множество предков и текущий элемент. attribute:: — возвращает множество атрибутов текущего элемента. child:: — возвращает множество потомков на один уровень ниже. descendant:: — возвращает полное множество потомков. descendant-or-self:: — возвращает полное множество потомков и текущий элемент. following:: — возвращает необработанное множество, ниже текущего элемента. following-sibling:: — возвращает множество элементов на том же уровне, следующих за текущим. namespace:: — возвращает множество имеющее пространство имён (то есть присутствует атрибут xmlns). parent:: — возвращает предка на один уровень назад. preceding:: — возвращает множество обработанных элементов исключая множество предков. preceding-sibling:: — возвращает множество элементов на том же уровне, предшествующих текущему. self:: — возвращает текущий элемент. Для наиболее часто используемых осей существуют сокращения: attribute:: — можно заменить на «@» child:: — часто просто опускают descendant:: — можно заменить на «.//» parent:: — можно заменить на «..» self:: — можно заменить на «.» Для приведенного выше примера
Чаще xpath-запрос начинают с «.//» или «//», это делает путь к элементу относительным. Символы ".//" в начале запроса возвращают полное множество потомков, которые являются дочерними для корня документа, т.е. все элементы на текущей странице. В данном случае точку в начале запроса можно опустить, потому что корневой элемент уже является контекстом. Первый пример можно переписать так:
Важную роль в построение запросов играют предикаты — это необязательная часть, заключаемая в квадратные скобки, в которой могут содержаться оси, условия проверки, функции и операторы. В ходе обработки предиката из полученного на шаге набора узлов исключаются узлы, не прошедшие условие проверки. Например, найдем элемент span, находящийся внутри любого элемента с id = «first»

Введение в XPath (часть 1). Поддержка XPath в Selenium и инструментальные средства.

XPath (XML Path Language) — язык запросов к элементам XML или XHTML документа, реализующий навигацию по DOM. XPath предназначен для использования другими спецификациями, такими как XSL Transformations (XSLT) и XML Pointer Language (XPointer).
WebDriver предоставляет несколько способ поиска элементов. Идентификация поиска осуществляется при помощи класса By. Одним из вариантов поиска By является xpath, принимающий в качестве параметра строку, представляющую собой xpath-запрос:

driver.findElement(By.xpath("//input[@id='login']"));
 
Будьте внимательны, используя xpath. Selenium при построении xpath-запроса использует стандартные обозначения — поиск начинается с «//», т.е. будет искать по DOM-дереву всего документа, а не только среди потомков текущего узла. Поэтому если вы выстраиваете поисковые запросы в цепочку, то используйте «.//» для того, чтобы ограничить поиск среди потомков элемента.

// найдет первый элемент a с классом "link" на странице:
driver.findElement(By.id("some-id")).findElement(By.xpath("a[@class='link']")); 

// найдет первый элемент a с классом "link" среди потомков элемента с id="some-id":
driver.findElement(By.id("some-id")).findElement(By.xpath(".//a[@class='link']"));

Если критериям поиска удовлетворяет несколько элементов, результатом выполнения findElement будет первый из них. Если же элемент не найден, будет выдано исключение NoSuchElementException.
Некоторые HTML элементы не нуждаются в явном указании атрибутов потому, что они имеют какое-то стандартное значение по умолчанию. Основное правило при использовании xpath — НЕ полагайтесь на то, что XPath-запрос обнаружит такой неявный атрибут.
Для браузеров, в которых встроенная поддержка XPath отсутствует, разработана собственная реализация поиска по xpath. Однако, в некоторых случаях, это может приводить к неожиданным результатам.
Driver Встроенная поддержка XPath
HtmlUnitDriver Yes
InternetExplorerDriver No
FirefoxDriver Yes
Скажу пару слов об инструментальных средствах XPath, которые могут пригодиться в ходе работы. Они позволяют отлаживать XPath-выражения и помогают при создании и проверке XPath. Их использование значительно облегчает написание тестов, в которых используется поиск элементов по xpath. Так как поле нашей деятельности — это тестирование сайтов и web-приложений, то и речь пойдет о поддержке XPath в браузерах:
  • Chrome xPath Viewer. Осуществляет поиск DOM элементов на текущей странице с заданными выражениями XPath и CSS селекторами. При наведении на найденный результат в списке подсвечивает элемент на странице. Щелчок правой кнопкой мыши на элементе возвращает абсолютное XPath выражение.
    Преимущества:
    — достаточно прост в обращении;
    — поддержка CSS.
    Недостатки:
    — когда xPath Viewer активен нет возможности вызвать контекстное меню для элемента правой кнопкой мыши;
    — предлагаемый xpath элемента строится только по тегам и позициям, не учитывая id;
    — нет поддержки svg-контента на странице.
     
  • Mozilla Firefox XPath Checker. Интерактивный редактор выражений XPath. Запускается из контекстного меню командой ‘View XPath’. Динамически обновляет результаты при редактировании запроса. Преимущества:
    — генерируемый xpath элементов строится оптимальным образом, используя id элементов;
    — успешно работает с svg-контентом и т.п. за счет поддержки различных namespaces.
    Недостатки:
    — необходимо закрывать и открывать XPath Checker, чтобы получить xpath нового элемента.
    — визуальное отображение найденных элементов в результатах — громоздко и бесполезно.
     
  • Mozilla FirePath. FirePath является расширением для Firebug, которое добавляет инструменты для редактирования, проверки и создания выражения XPath, CSS селекторов и селекторов JQuery.
    Преимущества:
    — генерируемый xpath элементов строится оптимальным образом, используя id элементов;
    — поддержка работы с различными namespaces;
    — отображение результатов в Firebug, в DOM-модели документа;
    — подсвечивание результатов непосредственно на странице.
Синтаксис и правила построения xpath-запросов описаны в статье Введение в XPath (часть 2). Основы построения запросов

четверг, 3 ноября 2016 г.

Selenium IDE: interactions

Simulating Keypress Events in Selenium IDE
Since version 2.3.0, Selenium IDE supports keyboard keypress events. We can simulate Selenium IDE keypress events using newly introduced sendKeys command. Keypress events can be utilized in WebDriver Playback as well. All in all, it’s a very useful addition in Selenium IDE. Therefore in this tutorial, we will discuss about different options available in Selenium IDE to handle keyboard keypress events.
Let’s see how to use sendKeys in Selenium IDE. sendKeys command takes locator and value parameters just like any other Selenium IDE commands. To define a keyboard key, you just have to prefix its value with ‘KEY_’ text and write it as variable(Eg. using ${ }). For example, below command hits Enter key on button called ‘login’.
You can combine text with keys. For example, ‘Testing Diaris${KEY_LEFT}e’. You can also perform keypress with modifier keys such as Alt, Ctrl, Shift, Command(in Mac) etc. The first occurance of a modifier key presses them and the second one releases it. All modifier keys are released at the end of the sendKeys command. It will not affect the subsequent sendKeys command. Below is an exhaustive list of supported keyboard commands in Selenium IDE.
Navigation Keys:
  • KEY_LEFT (Navigation Left)
  • KEY_UP (Navigation Up)
  • KEY_RIGHT (Navigation Right)
  • KEY_DOWN (Navigation Down)
  • KEY_PGUP / KEY_PAGE_UP (Page up)
  • KEY_PGDN / KEY_PAGE_DOWN (Page down)
  • KEY_END (End)
  • KEY_HOME (Home)
Function Keys:
  • KEY_F1 to KEY_12 (Function keys from F1 to F12)
Modifier Keys:
  • KEY_ALT (Alt)
  • KEY_CONTROL / KEY_CTRL (Ctrl)
  • KEY_META / KEY_COMMAND (Command)
  • KEY_SHIFT (Shift)
Num Pad Keys:
  • KEY_NUMPAD0 / KEY_N0 to KEY_NUMPAD9 / KEY_N9 (Number keys from 1 to 9)
  • KEY_ADD / KEY_NUM_PLUS (Plus)
  • KEY_DECIMAL/ KEY_NUM_PERIOD (Period)
  • KEY_DIVIDE/ KEY_NUM_DIVISION (Division)
  • KEY_MULTIPLY/ KEY_NUM_MULTIPLY (Multiply)
  • KEY_SEPARATOR/ KEY_SEP (Separator)
  • KEY_SUBTRACT/ KEY_NUM_MINUS (Minus)
Misc. Keys:
  • KEY_BKSP / KEY_BACKSPACE (Backspace)
  • KEY_DEL / KEY_DELETE (Delete)
  • KEY_ENTER (Enter)
  • KEY_EQUALS (Equals)
  • KEY_ESC / KEY_ESCAPE (Escape)
  • KEY_INS / KEY_INSERT (Insert)
  • KEY_PAUSE (Pause)
  • KEY_SEMICOLON (Semi-colon)
  • KEY_SPACE (Space)
  • KEY_TAB (Tab)
Tip: Do not create any other stored variable in your Selenium IDE script with KEY_ prefix.
We hope you would find the above post illustrating Selenium IDE keypress events useful. Let us know your views in comments.

Selenium IDE JavaScript and Command Parameters
The example below shows you how a JavaScript snippet can be used to perform a simple numerical calculation.
Command Target Value
store 10 Number1
store 20 Number2
storeEval parseInt(storedVars['Number1'])+parseInt(storedVars['Number2']) sumResult
echo ${sumResult}
Here is the above script execution result.
  • [info] Executing: |store | 10 | Number1 |
  • [info] Executing: |store | 20 | Number2 |
  • [info] Executing: |storeEval | parseInt(storedVars['Number1'])+parseInt(storedVars['Number2']) | sumResult |
  • [info] script is: parseInt(storedVars['Number1'])+parseInt(storedVars['Number2'])
  • [info] Executing: |echo | ${sumResult} | |
  • [info] echo: 30


JavaScript Usage with Non-Script Parameters

JavaScript can also be used to help generate values for parameters, even when the parameter is not specified to be of type script. However, in this case, special syntax is required–the JavaScript snippet must be enclosed inside curly braces and preceded by the label JavaScript.

Command Target Value
store 10 Number1
store 20 Number2
echo javascript{parseInt(storedVars['Number1'])+parseInt(storedVars['Number2'])}


SEO: Эксперимент: как Яндекс и Google учитывают ключевые слова в URL

Эксперимент: как Яндекс и Google учитывают ключевые слова в URL Эксперимент: как Яндекс и Google учитывают ключевые слова в URL Дата пу...