是否可以从Selenium脚本(来自Selenium IDE的纯HTML保存脚本)中检索基本URL 的值?
我要做的是使用assertLocation
验证当前网址。但是assertLocation
会返回绝对网址。我想将当前网址与相对网址进行比较,而不必在网址的开头使用*
。
我想访问基本字符串,因为我希望能够在不同的站点(各种开发站点+生产站点)上运行测试,但如果我使用*
我无法检查对于根页面(*/
对于以/
结尾的每个页面都是如此...)
这就是我目前所做的事情:
| assertLocation | * / some-page | |
这就是我想做的事情:
| assertLocation | baseURL + “/ some-page”| |
注意:甚至可以:
答案 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