In Selenium IDE, how to get the value of the base url

后端 未结 7 1510
栀梦
栀梦 2021-02-04 01:19

Is it possible to retrieve the value of the base url from inside a Selenium script (a plain HTML-saved script from Selenium IDE)?

What I\'m trying to do

相关标签:
7条回答
  • 2021-02-04 01:57

    You can use Selenium driver to get the current Url as a String, then convert the object into a URL object. Once you have done that, the Java URL class has some methods that you can use to get parts of the 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 讨论(0)
  • 2021-02-04 02:06

    After struggling with using the verifyLocation selenium IDE command (which only gives you the host name to verify, and will include parts of the query string which may be widely random at runtime) the way to verify the current url and path which is the most flexible (so far) is to use the "verifyEval" command and use javascript to parse out the portion of the url I want to test:

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

    You can put any of the location properties that javascript supports and test those (see https://gist.github.com/jlong/2428561)...

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

    OR for example:

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

    Or feel free to make combinations

    Command:verifyEval
    Target: window.location.protocol+'//'+window.location.hostname+window.location.pathname=='http://example.com/my/stuff'
    Value:true
    
    0 讨论(0)
  • 2021-02-04 02:07
    <tr>
    <td>storeLocation</td>
    <td>url</td>
    <td></td>
    </tr>
    <tr>
    <td>echo</td>
    <td>${url}</td>
    <td></td>
    </tr>
    
    0 讨论(0)
  • 2021-02-04 02:13

    You can also open your base page and use storeLocation to put the current location into a variable:

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

    Bonus: here's how I figured out the corresponding SSL url

    |storeEval|window.document.location.toString().replace(new RegExp("^http://([^:]+):80"), "https://$1:40");|hostSSL|
    
    0 讨论(0)
  • 2021-02-04 02:15

    Try this

    storeEval|window.document.domain|host
    assertLocation|http://${host}/some-page|
    
    0 讨论(0)
  • 2021-02-04 02:17

    Using Selenium IDE, this is do able without storing the $(host) value.

    Command: open
    Target: */login
    Value:
    

    This snippet string-match patterns available in the Selenium Core [Source].

    0 讨论(0)
提交回复
热议问题