在Selenium IDE中,如何获取基本URL的值

时间:2010-02-04 22:10:02

标签: testing selenium automated-tests selenium-ide

是否可以从Selenium脚本(来自Selenium IDE的纯HTML保存脚本)中检索基本URL 的值?

我要做的是使用assertLocation验证当前网址。但是assertLocation会返回绝对网址。我想将当前网址与相对网址进行比较,而不必在网址的开头使用*

我想访问基本字符串,因为我希望能够在不同的站点(各种开发站点+生产站点)上运行测试,但如果我使用*我无法检查对于根页面(*/对于以/结尾的每个页面都是如此...)

这就是我目前所做的事情:

  

| assertLocation | * / some-page | |

这就是我想做的事情:

  

| assertLocation | baseURL +   “/ some-page”| |

注意:甚至可以:

  1. 在目标中使用变量;
  2. 连接变量和字符串?

7 个答案:

答案 0 :(得分:18)

试试这个

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

答案 1 :(得分:6)

您还可以打开基页并使用storeLocation将当前位置放入变量:

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

奖励:这是我如何计算出相应的SSL网址

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

答案 2 :(得分:2)

上述解决方案导致我的开发环境出现在非标准端口上。此解决方案也可能有助于https。如果你真的想要基本网址:

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

答案 3 :(得分:1)

使用Selenium IDE,无需存储$(host)值即可。

Command: open
Target: */login
Value:

Selenium Core [Source]中提供的此代码段字符串匹配模式。

答案 4 :(得分:0)

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

答案 5 :(得分:0)

您可以使用Selenium驱动程序将当前Url作为String获取,然后将该对象转换为URL对象。完成后,Java URL类可以使用一些方法来获取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;
}

答案 6 :(得分:0)

在使用verifyLocation selenium IDE命令(只提供验证的主机名,并且将包含可能在运行时广泛随机的查询字符串的部分)之后,使用验证当前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