В Selenium IDE, как получить значение базового URL - PullRequest
21 голосов
/ 05 февраля 2010

Можно ли извлечь значение базового URL из сценария Selenium (обычный сценарий, сохраненный в HTML из Selenium IDE)?

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

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

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

| assertLocation | * / некоторые страницы | |

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

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

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

  1. использовать переменную в цели;
  2. объединить переменную и строку?

Ответы [ 7 ]

18 голосов
/ 05 февраля 2010

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

storeEval|window.document.domain|host
assertLocation|http://${host}/some-page|
6 голосов
/ 26 февраля 2010

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

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

Бонус: вот как я выяснил соответствующий URL SSL

|storeEval|window.document.location.toString().replace(new RegExp("^http://([^:]+):80"), "https://$1:40");|hostSSL|
2 голосов
/ 19 февраля 2014

Приведенные выше решения вызывают проблемы с моей средой разработки на нестандартном порту. Это решение также может помочь с 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>
1 голос
/ 11 ноября 2015

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

Command: open
Target: */login
Value:

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

0 голосов
/ 01 сентября 2016

После попытки использования команды 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
0 голосов
/ 19 февраля 2014

Вы можете использовать драйвер 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;
}
0 голосов
/ 31 августа 2012
<tr>
<td>storeLocation</td>
<td>url</td>
<td></td>
</tr>
<tr>
<td>echo</td>
<td>${url}</td>
<td></td>
</tr>
...