Selenium во время цикла?

#javascript #jquery #html #selenium-ide

#javascript #jquery #HTML #selenium-ide

Вопрос:

  </head>
    <body>
    <table cellpadding="1" cellspacing="1" border="1">
    <thead>
    <tr><td rowspan="1" colspan="3">test</td></tr>
    </thead><tbody>
    <tr>
        <td>click</td>
        <td>//div[@id='wrapper']/div/div/div</td>
        <td></td>
    </tr>
    <tr>
        <td>waitForElementNotPresent</td>
        <td>//div[contains(@class,'ui-widget-overlay')]</td>
        <td></td>
    </tr>
    <tr>
        <td>click</td>
        <td>//div[@id='dataTableContent']/div/div/div[2]/table/tbody/tr[1]/td</td>
        <td>2</td>
    </tr>
    <tr>
        <td>waitForElementNotPresent</td>
        <td>//div[contains(@class,'ui-widget-overlay')]</td>
        <td></td>
    </tr>
    <tr>
        <td>click</td>
        <td>id=backButton</td>
        <td></td>
    </tr>
    <tr>
        <td>waitForElementNotPresent</td>
        <td>//div[contains(@class,'ui-widget-overlay')]</td>
        <td></td>
    </tr>
    <tr>
        <td>click</td>
        <td>//div[@id='dataTableContent']/div/div/div[2]/table/tbody/tr[2]/td</td>
        <td>2</td>
    </tr>
    <tr>
        <td>waitForElementNotPresent</td>
        <td>//div[contains(@class,'ui-widget-overlay')]</td>
        <td></td>
    </tr>
    <tr>
        <td>click</td>
        <td>id=backButton</td>
        <td></td>
    </tr>
    <tr>
        <td>waitForElementNotPresent</td>
        <td>//div[contains(@class,'ui-widget-overlay')]</td>
        <td></td>
    </tr>
    <tr>
        <td>click</td>
        <td>//div[@id='dataTableContent']/div/div/div[2]/table/tbody/tr[3]/td</td>
        <td>2</td>
    </tr>
    <tr>
        <td>waitForElementNotPresent</td>
        <td>//div[contains(@class,'ui-widget-overlay')]</td>
        <td></td>
    </tr>
    <tr>
        <td>click</td>
        <td>id=backButton</td>
        <td></td>
    </tr>
    <tr>
        <td>waitForElementNotPresent</td>
        <td>//div[contains(@class,'ui-widget-overlay')]</td>
        <td></td>
    </tr>
    <tr>
        <td>click</td>
        <td>//div[@id='dataTableContent']/div/div/div[2]/table/tbody/tr[4]/td</td>
        <td>2</td>
    </tr>
    <tr>
        <td>waitForElementNotPresent</td>
        <td>//div[contains(@class,'ui-widget-overlay')]</td>
        <td></td>
    </tr>
    <tr>
        <td>click</td>
        <td>id=backButton</td>
        <td></td>
    </tr>
    <tr>
        <td>waitForElementNotPresent</td>
        <td>//div[contains(@class,'ui-widget-overlay')]</td>
        <td></td>
    </tr>
    </tbody></table>
    </body>
    </html>
  

Я хочу щелкнуть по 4 разделам.
У всех один и тот же путь, но не один и тот же tablediv.

/div/div/div[2]/table/tbody/tr[1]/td -> от 1 до 4

Как я могу это сделать, чтобы минимизировать код, как я могу использовать цикл while здесь?

Код на Selenium содержит 18 команд..

Спасибо

Ответ №1:

Поскольку вы используете Selenium IDE, а не WebDriver, единственный цикл «while», который вы сможете выполнить, — это выполнить простой старый javascript.

 <tr>
  <td>store</td>
  <td>iterator</td>
  <td>1</td>
</tr>
<tr>
  <td>storeEval</td>
  <td>while (iterator <= 4) { browserBot.click("/div/div/div[2]/table/tbody/tr[1]/td["   iterator   "]" }</td>
  <td></td>
</tr>
  

Вам, конечно, нужно будет поиграть с этим, это псевдокод, но он даст довольно приличное представление о том, как его решить с помощью IDE.