Vraag Hoe stel ik een globale basis-URL in voor elke testcase van één testsuite in Selenium IDE?


Hoe kan ik een globale basis-URL instellen voor elke testcase van een testsuite in Selenium IDE, zodat ik gemakkelijk naar een andere omgeving kan schakelen?


29
2018-03-18 16:18


oorsprong


antwoorden:


Als u veel testcases heeft in een enkele suite, is het lastig om de basis-URL voor elke suite te wijzigen. Maak in plaats daarvan een afzonderlijke case voor elke basis-URL waar je naartoe moet schakelen. Ik heb bijvoorbeeld store https://testing.site.com/alsmyEnvironment opgeslagen als testcase SetEnvTesting. Ik maak een nieuwe case voor mijn productiesite, SetEnvProduction.

Voeg vervolgens de ${myEnvironment} aan het begin van elke relatieve URL in uw testcases. Bijvoorbeeld, open ${myEnvironment}/login.aspx. (Dit kan erg vervelend zijn als je al heel wat tests hebt gedaan. Ik stel voor het gewoon vanaf nu toe te voegen.) Zet ​​vervolgens de set-environment-testcase aan het begin van je testsuite. Als u uw volledige suite wilt omzetten naar een andere basis-URL, plaatst u eenvoudigweg een andere case voor de instellingsomgeving aan het begin. Een ander voordeel is dat je in het midden van de suite van omgeving kunt veranderen door een andere set-environment-case in het midden te plaatsen.

Bewerken: voorbeeld van het gebruik van een SetEnvironment-testcase.

De zaak SetEnvironment: enter image description here

Een voorbeeld van een volgende testcase. enter image description here

Merk op

  1. hoe de CurrentEnvironment-variabele wordt gebruikt. U kunt dit voor elke case in de suite doen. Bovendien kunt u ervoor zorgen dat elke afzonderlijke testsuite dezelfde set met SetEnvironment gebruikt, dus ze schakelen allemaal tegelijk.

  2. dat de basis-URL niet relevant is. Je negeert het in wezen.

Ik hoop dat dat nuttig is!


33
2018-03-05 20:45



Het HTML-bestand met testcases is verantwoordelijk voor het instellen van de basis-URL. Vanuit de Selenium IDE kunt u de basis-URL voor een testcase overschrijven. Een testsuite daarentegen is slechts een zak voor uw testcases.

Verwijder de basis-URL-instelling uit elk van de testcasebestanden waarnaar wordt verwezen vanuit uw testsuite. Stel vervolgens de basis-URL handmatig in voor de testsuite en voer de suite uit.

De betreffende regel staat aan het hoofd van elk testcasebestand:

<link href="http://server-name/" rel="selenium.base"/>

Als deze ontbreekt, wordt deze automatisch vervangen door de basis-URL.


12
2018-02-29 20:53



ik heb het gevonden buitengewoon frustrerend dat ik niet zomaar een lege basis-URL kon hebben en dat ik elke pagina die ik al open had, mocht gebruiken als begin van de test. Wat heeft het voor zin om te kunnen opnemen familielid URL's wanneer dit u dwingt een basis-URL hardcoderen dat is voorafgegaan aan elke relatieve URL (waardoor ze in absoulte urls veranderen) ??

Uitbreiding van de andere antwoorden en van deze vraag: In Selenium IDE, hoe de waarde van de basis-url te krijgen

U kunt het huidige domein in een variabele opslaan en vervolgens gebruiken in plaats van een gecodeerde variabele. Hiermee kunt u inloggen op de server waarop u de tests wilt uitvoeren, op play drukken en worden de tests uitgevoerd zonder dat al deze onzin van baseURL u doorverwijst naar de verkeerde server.

Gebruik deze commando's aan het begin van het eerste script in uw suite: store current server

En blijf de http://${host}/syntaxis voor elke echt relatief URL die je nodig hebt in je script.


9
2018-03-04 23:08



Ik heb zojuist een afzonderlijke test gemaakt en deze aan de top van alle tests gezet. Sla de basis-URL op naar een variabele en nu kan ik deze in andere testgevallen openen met $ {variable_name}.


6
2018-03-18 16:33



Ik probeerde het geaccepteerde antwoord, het werkt voor selenium IDE, maar het werkt niet tijdens het hardlopen stand-alone server.

uiteindelijk heb ik de waarde erin gestopt user-extensions.js en gebruik storeEval om de waarde terug te krijgen. Dan kon dezelfde waarde binnen verschillende gevallen worden teruggevonden.

BEWERK:

Voeg in de user-extensions.js het volgende toe

var selenium_base_url = "http://example.com"

Voeg het volgende toe in de HTLM-suite

<tr>
    <td>storeEval</td>
    <td>selenium_base_url</td>
    <td>case_base_url</td>
</tr>
<tr>
    <td>open</td>
    <td>${case_base_url}/case_path?a=1&b=2</td>
    <td></td>
</tr>

Dit lijkt misschien vreemd op het eerste gezicht, maar eigenlijk user-extension.js kan direct voor de kaart worden aangepast stand-alone server uitvoeren, dus u kunt een andere basis-url plaatsen met een script in het echte QA-scenario.


1
2018-04-07 06:56



Hmm, ik denk dat er een eenvoudiger oplossing is:

  • In de eerste test (van de testsuite) aanpassen <link rel="selenium.base" href="http://google.com" /> zoals nodig

  • Verwijder in de volgende tests (met teksteditor of vergelijkbaar): <link rel="selenium.base" ... />


0
2018-02-10 04:50



Als je het goed vindt, dubbelklik je meerdere keren op

  1. Dubbelklik op de bovenste, stel deze in op de gewenste URL.
  2. Dubbelklik nu op de bovenste, middelste, onderste.
  3. Dubbelklik nu op de onderkant, het midden, de bovenkant.

0
2018-02-18 23:13



Ik heb een user-extension commando 'doBaseURL' gemaakt dat het Selenium IDE veld 'Base URL' manipuleert. In elke testcase van een testsuite heb ik deze opdracht toegevoegd | baseURL | | |. Onder het oppervlak wordt een opgeslagen variabele met de naam baseURL ingesteld. Het is mogelijk om de opgeslagen variabele 'baseURL' een waarde te geven uit een testcase-opdracht voorafgaand aan de eerste 'baseURL'-opdracht. Deze methode overschrijft de <link href="http://server-name/" rel="selenium.base"/> instelling van elk testcasebestand. Voor mij werkt dit prima, aangezien de Selenium IDE de basis-URL weergeeft die de testcase (s) zullen gebruiken (of gebruikten toen er een fout optrad).

Het java-script is:

Selenium.prototype.doBaseURL = function(strTarget, strValue) {
/**
  * Enables a more predictive Base URL when running a test suite with multiple test cases. 
  * On first usage it wil fill a stored variable 'baseURL' either with the given strTarget,
  * or when not given with the Base URL as shown on the Selenium IDE UI. The Selenium IDE UI field
  * Base URL is updated to reflect the (new) base URL. 
  * In each subsequent test case with a baseURL command the stored variable 'baseURL' will determine
  * the base.
  *
  * <p> Best to use as first command in each test case and only in the first test case a strTarget
  * argument, in that way the test cases of a test suite will no longer depend on their 'hidden'
  * '<link rel="selenium.base" href="http://www.something.com/" />
  * construction, that makes test cases effectively having an absolute base URL.
  * </p>
  *
  * @param strTarget a Base URL value to be used in the test case (e.g. https://www.google.com/)
  */

// pushes the given strTarget into the selenium.browserbot.baseUrl
// and makes the new Base URL value visible on the Selenium IDE UI.
// A subsequent open command will use this new Base URL value

LOG.debug("begin: doBaseURL | " + strTarget + " | " + strValue + " |");

// note:    window.location.href = strTarget;      causes the browser to replace Selenium-IDE UI with the given url
// used that knowledge to manipulate the Selenium IDE UI as if a manual Base URL change was done.
LOG.debug("window.location.href= [" + window.location.href + "]");
LOG.debug("window.editor.app.getBaseURL() gives [" + window.editor.app.getBaseURL() + "]");

if (strTarget && (strTarget.substring(0,1)!="$")) { // only when strTaget has a value

strValue = "Base URL changed from [" + selenium.browserbot.baseUrl.toString() + "] into [" + strTarget + "]"; 
selenium.browserbot.baseUrl = strTarget.toString();

// set the visible Base URL value on the Selenium IDE UI to the new value
window.editor.app.setBaseURL(strTarget);
LOG.debug("updated into: " + window.editor.app.getBaseURL());

// remember this value for future calls
storedVars["baseURL"] = window.editor.app.getBaseURL();
LOG.debug("storedVars[\"baseURL\"] set to [" + window.editor.app.getBaseURL() + "]");

} else {
// no value =>  take storeVars["baseURL"] when set;
//      otherwise take Selenium IDE Base URL field.
if ((storedVars["baseURL"] != undefined) && (storedVars["baseURL"] != "")) {
    strValue = "Base URL changed from [" + selenium.browserbot.baseUrl.toString() + "] into [" + storedVars["baseURL"] + "]"; 
    selenium.browserbot.baseUrl = storedVars["baseURL"];

    // set the visible Base URL value on the Selenium IDE UI to the new value
    window.editor.app.setBaseURL(storedVars["baseURL"]);
    LOG.debug("updated from storedVars[\"baseURL\"]");
} else {
    strValue = "Base URL changed from [" + selenium.browserbot.baseUrl.toString() + "] into [" + window.editor.app.getBaseURL() + "]"; 
        selenium.browserbot.baseUrl = window.editor.app.getBaseURL();

    // remember this value for future calls
    storedVars["baseURL"] = window.editor.app.getBaseURL();
    LOG.debug("storedVars[\"baseURL\"] set to [" + window.editor.app.getBaseURL() + "]");
}
}
LOG.info(strValue);
LOG.debug("end: doBaseURL | " + strTarget + " | " + strValue + " |");
}

Het installeren van een gebruikersuitbreidingsscript wordt uitgelegd in de sectie Gebruik van gebruikersuitbreidingen met Selenium-IDE SeleniumHQ-documentatie: http://www.seleniumhq.org/docs/08_user_extensions.jsp


0
2018-02-26 16:04