Подтвердить что ты не робот

В Selenium IDE, как получить значение базового url

Можно ли получить значение базового url изнутри селена script (простой с сохранением HTML script из Selenium IDE)?

То, что я пытаюсь сделать, это проверить текущий url, используя assertLocation. Но assertLocation возвращает абсолютный URL-адрес. Я хотел бы сравнить текущий URL-адрес с относительным URL-адресом, не используя * в начале URL-адреса.

Я хотел бы иметь доступ к базовой строке, потому что я хочу иметь возможность запускать тесты на разных сайтах (разные сайты разработчиков + производственный сайт), но если я использую *, я не могу проверить корневая страница (*/ будет верна для каждой страницы, которая заканчивается на /...)

Это то, что я сейчас делаю:

| assertLocation | */some-page | |

Это то, что я хотел бы сделать:

| assertLocation | baseURL + "/some-page" | |

Примечание: возможно ли:

  • используйте переменную в целевом объекте;
  • объединить переменную и строку?
4b9b3361

Ответ 1

Попробуйте это

storeEval|window.document.domain|host
assertLocation|http://${host}/some-page|

Ответ 2

Вы также можете открыть свою базовую страницу и использовать storeLocation, чтобы поместить текущее местоположение в переменную:

|open|/||
|storeLocation|host||
|assertLocation|${host}somepage.html

Бонус: здесь, как я выяснил соответствующий SSL-url

|storeEval|window.document.location.toString().replace(new RegExp("^http://([^:]+):80"), "https://$1:40");|hostSSL|

Ответ 3

Вышеупомянутые решения вызывают проблемы с моей средой разработки на нестандартном порту. Это решение также может помочь с https. Если вам действительно нужен базовый url:

<tr>
<td>storeEval</td>
<td>selenium.browserbot.baseUrl</td>
<td>baseurl</td>
</tr>
<tr>
<td>echo</td>
<td>${baseurl}</td>
<td></td>
</tr>

Ответ 4

Используя Selenium IDE, это возможно, не сохраняя значение $(host).

Command: open
Target: */login
Value:

Этот фрагмент шаблона со списком фрагментов, доступный в Selenium Core [Источник].

Ответ 5

<tr>
<td>storeLocation</td>
<td>url</td>
<td></td>
</tr>
<tr>
<td>echo</td>
<td>${url}</td>
<td></td>
</tr>

Ответ 6

Вы можете использовать драйвер Selenium для получения текущего Url в виде строки, а затем преобразовать объект в объект URL. После того, как вы это сделали, класс URL-адреса Java имеет некоторые методы, которые можно использовать для получения частей URL-адреса.

String url = driver.getCurrentUrl();
String domain = getDomainName( url );
public static String getDomainName( String url ) throws URISyntaxException {
    URI uri = new URI(url);
    String domain = uri.getHost();
    return domain.startsWith("www.") ? domain.substring(4) : domain;
}

Ответ 7

После борьбы с использованием команды IDE verifyLocation selenium (которая дает только имя хоста для проверки и включает части строки запроса, которые могут быть широко случайными во время выполнения), способ проверки текущего URL-адреса и пути, который наиболее гибкой (до сих пор) является использование команды "verifyEval" и использование javascript для анализа части URL, которую я хочу проверить:

verifyEval | window.location.pathname=="/my/stuff" | true

Вы можете поместить любые свойства местоположения, поддерживаемые javascript, и протестировать их (см. https://gist.github.com/jlong/2428561)...

Command: verifyEval
Target: window.location.pathname=="/my/stuff"
Value: true

ИЛИ например:

Command: verifyEval
Target: window.location.hostname=="example.com"
Value: true

Или не стесняйтесь делать комбинации

Command:verifyEval
Target: window.location.protocol+'//'+window.location.hostname+window.location.pathname=='http://example.com/my/stuff'
Value:true