сценарии селена - PullRequest
       8

сценарии селена

2 голосов
/ 12 мая 2010

Я хочу использовать сценарии селена, чтобы нажимать по паре ссылок на моей веб-странице одну за другой, каждый щелчок приводит к обновлению страницы. Однако селен не поддерживает псевдо-класс css, такой как :ited, поэтому я не могу отличить те, которые уже нажаты, от тех, на которые я хочу щелкнуть далее. Есть ли способ решить мою проблему?

вот мой код: http://pastebin.com/z0uRTHHp

Ответы [ 4 ]

3 голосов
/ 12 мая 2010

Вы можете использовать команду getXPathCount, чтобы получить количество ссылок на странице, а затем просмотреть их с помощью XPath. Ниже приведен простой пример использования Java с Selenium RC:

int linkCount = selenium.getXpathCount("/descendant::a").intValue();
for (int i = 0; i < linkCount; i++) {
    selenium.click("/descendant::a[" + i + "]");
    selenium.waitForPageToLoad("60000");
    //ADD YOUR CHECKS HERE
    selenium.goBack();
    selenium.waitForPageToLoad("60000");
}

Если вы используете Selenium 2 или WebDriver, должно работать следующее:

List<WebElement> links = driver.findElements(By.xpath("/descendant::a"));
int lSize = links.size();

for (int l = 0; l < lSize; l++) {
    links = driver.findElements(By.xpath("/descendant::a"));
    WebElement link = links.get(l);
    link.click();
    //ADD YOUR CHECKS HERE
    driver.navigate().back();
}

Надеюсь, это поможет.

0 голосов
/ 05 июня 2016

сначала вам нужно получить все ссылки на вашей веб-странице:

List<WebElement> links= driver.findElements(By.Tag('a'));

Во-вторых, вам нужно повторять одну за другой, нажимая на конкретную ссылку, и, как вы упомянули после нажатия, ваша страница будет обновлена, поэтому в этом случае вам нужно подождать, пока ваша следующая ссылка полностью не нажмет:

for(WebElement link: links) 
{
//wait for element to clickable
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.elementToBeClickable(link);
link.click();
}

и если вы хотите различить, какая ссылка уже нажата, возможно, цвет текста вашей ссылки исчезнет или изменится после щелчка.

0 голосов
/ 24 февраля 2016

Нажмите на все ссылки на странице:

 @Test
     public void test () throws InterruptedException {
     try {
     List<WebElement> no = driver.findElements(By.tagName("a")); 
    int nooflinks = no.size(); 
    System.out.println(nooflinks); 
    for (WebElement pagelink : no) { 
     no.click();
    String linktext = pagelink.getText();
     driver.navigate.refresh();
      Thread.sleep(1000);
    System.out.println(linktext);
       }
     }
    catch (Exception e){
     System.out.println("error "+e);
        }
     } 
0 голосов
/ 13 мая 2010

Новый ответ для решения с использованием Selenium IDE:

Примечание: Вам необходимо установить плагин Flow Control с https://addons.mozilla.org/en-US/firefox/addon/85794/ (или использовать расширение пользователя с http://51elliot.blogspot.com/2008/02/selenium-ide-goto.html)

<tr>
  <td>storeXpathCount</td>
  <td>//body/descendant::a</td>
  <td>linkCount</td>
</tr>
<tr>
  <td>store</td>
  <td>1</td>
  <td>link</td>
</tr>
<tr>
  <td>label</td>
  <td>checkLink</td>
  <td></td>
</tr>
<tr>
  <td>echo</td>
  <td>checking link ${link} of ${linkCount}</td>
  <td></td>
</tr>
<tr>
  <td>clickAndWait</td>
  <td>//body/descendant::a[${link}]</td>
  <td></td>
</tr>
<!-- ADD YOUR CHECKS HERE -->
<tr>
  <td>goBackAndWait</td>
  <td></td>
  <td></td>
</tr>
<tr>
  <td>while</td>
  <td>storedVars['link'] &lt;= storedVars['linkCount']</td>
  <td></td>
</tr>
<tr>
  <td>storeEval</td>
  <td>storedVars['link'] = ${link} + 1;</td>
  <td></td>
</tr>
<tr>
  <td>gotolabel</td>
  <td>checkLink</td>
  <td></td>
</tr>
<tr>
  <td>endWhile</td>
  <td></td>
  <td></td>
</tr>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...