accessing different servers (urls) using selenium

2019-09-08 03:42发布

问题:

I've a requirement to hit a url of server x, click a submit button and jump to same url of server y and click the same submit button and this has to be repeated 26 times as I've to change on 26 servers.

All this I have to do selenium ide. I managed to do this for 1 server but just wondering if there is a smart way to do this for 26 servers rather recording 26 times.

I'm using selenium 2.9.0 IDE plugin with firefox browser

 <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head profile="http://selenium-ide.openqa.org/profiles/test-case">
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <link rel="selenium.base" href="http://server-x:9173/" />
    <title>New Test</title>
    </head>
    <body>
    <table cellpadding="1" cellspacing="1" border="1">
    <thead>
    <tr><td rowspan="1" colspan="3">New Test</td></tr>
    </thead><tbody>
    <tr>
    <td>open</td>
    <td>website/delivery/DeliveryMethodsRepository/</td>
    <td></td>
    </tr>
    <tr>
        <td>clickAndWait</td>
        <td>link=DeliveryMethodsRepository/</td>
        <td></td>
    </tr>
    <tr>
        <td>clickAndWait</td>
        <td>link=invalidateCaches</td>
        <td></td>
    </tr>
    <tr>
        <td>clickAndWait</td>
        <td>name=submit</td>
        <td></td>
    </tr>
    <tr>
        <td>clickAndWait</td>
        <td>link=DeliveryMethodsRepository/</td>
        <td></td>
    </tr>
    </tbody></table>
    <table cellpadding="1" cellspacing="1" border="1">
    <thead>
    <tr><td rowspan="1" colspan="3">New Test</td></tr>
    </thead><tbody>
    <tr>
        <td>open</td>
        <td>inventory/InventoryRepository/</td>
        <td></td>
    </tr>
    <tr>
        <td>clickAndWait</td>
        <td>link=InventoryRepository/</td>
        <td></td>
    </tr>
    <tr>
        <td>clickAndWait</td>
        <td>link=invalidateCaches</td>
        <td></td>
    </tr>
    <tr>
        <td>clickAndWait</td>
        <td>name=submit</td>
        <td></td>
    </tr>
    <tr>
        <td>clickAndWait</td>
        <td>link=InventoryRepository/</td>
        <td></td>
    </tr>
    </tbody></table>
    </body>
    </html>

回答1:

You can keep base url as "http://". You then need to use readCSV for all server urls and while loop for repeating for number of servers.

Please refer [http://bashamy.blogspot.co.uk/2016/01/selenium-ide-to-use-while-loop-and-read.html] for more information.

Edit Url: http://bashamy.blogspot.com/2016/01/selenium-ide-to-use-while-loop-and-read.html

Eg: Below html code opens 5 different urls from my CSV input file.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head profile="http://selenium-ide.openqa.org/profiles/test-case">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="selenium.base" href="http://onlineconversion.com/" />
<title>06 ReadCsv_n_Loop</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">06 ReadCsv_n_Loop</td></tr>
</thead><tbody>
<tr>
    <td>readCSV</td>
    <td>file://C:\Users\extayx\Documents\Selenium IDE\07Input.csv</td>
    <td></td>
</tr>
<tr>
    <td>store</td>
    <td>1</td>
    <td>row</td>
</tr>
<tr>
    <td>store</td>
    <td>1</td>
    <td>col</td>
</tr>
<tr>
    <td>store</td>
    <td>6</td>
    <td>z</td>
</tr>
<tr>
    <td>while</td>
    <td>${row}&lt;${z}</td>
    <td></td>
</tr>
<tr>
    <td>storeCellValue</td>
    <td>ip</td>
    <td>${row},${col}</td>
</tr>
<tr>
    <td>echo</td>
    <td>${ip}</td>
    <td></td>
</tr>
<tr>
    <td>open</td>
    <td>${ip}</td>
    <td>${ip}</td>
</tr>
<tr>
    <td>storeEval</td>
    <td>storedVars['row'] = ${row}+1</td>
    <td>x</td>
</tr>
<tr>
    <td>endWhile</td>
    <td></td>
    <td></td>
</tr>
</tbody></table>
</body>
</html>

My input CSV file has below information.

www.google.co.in
www.google.com
www.google.co.uk
www.news.google.co.in
www.seleniumhq.org


回答2:

Your question is very confusing, so I probably misunderstood it. In the unlikely case I got it right, you're trying to do the same task for different websites 26 times. Sounds like something a loop could do. Here's a sample Python code:

urls = ['http://foo.bar', 'http://otherfoo.otherbar',...]
for url in urls:
    driver.get(url)
    #your selenium code here


回答3:

This is something I have had to do myself, and is possible using a set of plugins called selite or also selblocks (although selite contains a version of this plugin already)

With these plugins it will allow you to save the list of URLs as an external json file, then to loop the test case you will just need to put the 'Forjson' command calling the file at the stage where you want your loop to begin, and the 'Endforjson' where you want it to end. All the documentation is in the link. Hope it helps.