从Selenium Web Driver中的网页获取数据

时间:2015-06-23 13:18:37

标签: javascript selenium selenium-webdriver automated-tests

我正在学习Selenium,我在解决这个问题时遇到了麻烦。我必须将以下链接https://www.oddset.de/de/annahmestelle/wettprogramm-kompakt中的所有游戏投注存储到数组中。

我对HTML和Javascript不太了解。我怎样才能将所有游戏投注的Spiel-Nr plus字段存储到数组中。

<div id="overview-3" class="accordion level-1"> 
  <div class="accordion-group"> 
    <div class="accordion-heading relative"> 
      <div id="overview-1-3" class="accordion-body in collapse"> 
        <div id="cont_3" class="accordion-inner"> 
          <div class="slv-prog-header"> 
            <div class="left-wrapper"> 
              <div class="middle-wrapper"> 
                <div class="right-wrapper"> 
                  <div class="slv-h slv-t4"> 
                    <div class="slv-h slv-t4"> 
                      <div class="slv-h slv-t5"> 
                        <div class="slv-h slv-t6"> 
                        </div> 
                        <div class="slv-h slv-t7"> 
                          <span class="head">Spiel-Nr. PLUS</span
                        </div>
                      </div>
                    </div>

3 个答案:

答案 0 :(得分:0)

好吧,你可以给这些列元素ID,以便更容易获得值

答案 1 :(得分:0)

您可以使用它来获取正确的Web元素列表:

List<WebElement> nrPlusElements = driver.findElements(By.cssSelector(".goToEventPage em:nth-of-type(2)"));

然后:

List<String> nrPlusStrings = new ArrayList<>();
for(WebElement nrPlusElem : nrPlusElements)
{
    nrPlusStrings.add(nrPlusElem.getText());
}

到一个数组:

String[] array = nrPlusStrings.toArray(new String[nrPlusStrings.size()]);

将它们映射到正确的游戏可能会有点困难,但这不是问题。

答案 2 :(得分:0)

我会使用像这样的XPath,它演示了如何在XPath上使用'contains'和'starts-with':

String xpathText = 
 ".//div[starts-with(@id,'overview') and contains(@class,'accordion')]//*[@class='head']";
By locator = By.xpath(xpathText);
List<WebElement> nrPlusElements = driver.findElements(locator);