Неожиданно для меня возвращаемое значение из javascript в Robot Framework.Зачем? - PullRequest
0 голосов
/ 20 ноября 2018

Когда я выполняю этот Javascript в Robot Framework

${locator}    Execute JavaScript    return document.activeElement
log  ${locator}

, журнал выглядит примерно так:

KEYWORD BuiltIn . Log ${Locator}
Documentation:  
Logs the given message with the given level.

Start / End / Elapsed:  20181120 12:14:37.008 / 20181120 12:14:37.008 / 00:00:00.000
12:14:37.008    INFO    <selenium.webdriver.remote.webelement.WebElement (session="b1f6da572666aa24004769a4ab3a2171", element="0.7758470428784936-13")>

Однако, когда я выполняю тот же код в консоли Chrome,результат может выглядеть примерно так:

input#login_field.form-control.input-block

Почему RF / JS-combo возвращает такой странный формат / значение?Мне нужен CSS-идентификатор или аналогичный.

1 Ответ

0 голосов
/ 20 ноября 2018

По сути, так выглядит объект WebElement.Что Google делает для представления значения этого объекта, так это выбирает определенные атрибуты, которые могут быть восприняты человеком / распознаваемы, и отображает их.За этим стоит (сложная) логика, чтобы показать уникальный локатор CSS для определенного элемента.

Элемент, как правило, не используется в Robot Framework, но может использоваться.В приведенном ниже примере он используется вместо локатора:

*** Settings ***
Library           SeleniumLibrary    
Suite Teardown    Close All Browsers

*** Test Cases ***
Get WebElement Name
    Open Browser     http://google.com        chrome
    ${WebElement}    Execute Javascript       return document.activeElement
    ${name}          Get Element Attribute    ${WebElement}    name
    Log    ${name}

В результате:

Starting test: Folder.Webdriver.Get WebElement Name
20181120 18:58:55.406 : INFO : Opening browser 'chrome' to base url 'http://google.com'.
20181120 18:58:59.499 : INFO : Executing JavaScript:
return document.activeElement
20181120 18:58:59.511 : INFO : ${WebElement} = <selenium.webdriver.remote.webelement.WebElement (session="c3648128649f6ffea907d36a6533e3fc", element="0.6417788615033906-1")>
20181120 18:58:59.527 : INFO : ${name} = q
20181120 18:58:59.527 : INFO : q
Ending test: Folder.Webdriver.Get WebElement Name

Однако этого можно добиться только с небольшим изменением JavaScript:

Get WebElement Name
    Open Browser     http://google.com        chrome
    ${name}    Execute Javascript       return document.activeElement.name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...