使用xpath通过Selenium计算一些节点。 C#

时间:2018-05-14 14:32:01

标签: c# selenium-webdriver

class Program
{
    static void Main(string[] args)
    {
        var driver = new ChromeDriver();
        driver.Navigate().GoToUrl("https://www.favorit.com.ua/uk/live/");
        string numberOfGame = driver.FindElement(By.XPath("//*[@id='livediv']/div/div[2]/ul/li[1]/ul/li[1]/ul/li/div/div/div[1]/div[2]/div[1]/span")).Text;
        string Command1_Goals = driver.FindElement(By.XPath("//*[@id='livediv']/div/div[2]/ul/li[1]/ul/li[1]/ul/li/div/div/div[2]/div/div/div/div[1]/div[1]")).GetAttribute("innerHTML");
        string Command2_Goals = driver.FindElement(By.XPath("//*[@id='livediv']/div/div[2]/ul/li[1]/ul/li[1]/ul/li/div/div/div[2]/div/div/div/div[1]/div[2]")).GetAttribute("innerHTML");
        string Command1 = driver.FindElement(By.XPath("//*[@id='livediv']/div/div[2]/ul/li[1]/ul/li[1]/ul/li/div/div/div[1]/div[1]/span[1]")).GetAttribute("innerHTML");
        string Command2 = driver.FindElement(By.XPath("//*[@id='livediv']/div/div[2]/ul/li[1]/ul/li[1]/ul/li/div/div/div[1]/div[1]/span[2]")).GetAttribute("innerHTML");
        string TimeOfGame = driver.FindElement(By.XPath("//*[@id='livediv']/div/div[2]/ul/li[1]/ul/li[1]/ul/li/div/div/div[1]/div[2]/div[2]/div")).GetAttribute("innerHTML");
        Console.OutputEncoding = Encoding.UTF8;
        Console.WriteLine("Game: " + numberOfGame + " Team 1: " + Command1 + " Goals: " + Command1_Goals + " | Team 2: " + Command2 + " Goals: " + Command2_Goals);
        Console.ReadLine();
    }
}        
嘿,伙计们!我现在正在创建游戏的在线统计数据。我知道网站上有统计数据,但我想得到我的个人信息。

我怎样才算数' li'这里的块://*[@id='livediv']/div/div[2]/ul/li[1]/ul/li[1] 我将计算它们,然后使用每个数字作为ID来获得游戏数量。这是对的吗?因为有许多' li'块,我想在每个块中获取值。检查屏幕截图:screenshot 每个category--block sp_1都包含很少的' li。我希望每个人都能获得游戏的价值观。 看看这个screenshot 我必须访问每个category--block sp_1并进入每个' li'那里。

<ul class="events--list">
    <li>
        <div class="event--head-block">
            <u></u>
            <div class="event--head">
                <div class="event--name--info">
                    <div class="event--name two--name">
                        <span>Славен Белупо</span>
                        <span>Істра 1961</span>
                    </div>
                    <div class="event--short--info">
                        <div class="event--line--position">
                            <span>9953</span>
                            <b>1491</b>
                        </div>
                        <div class="time--block">
                            <div class="event--timer">9:31</div>
                        </div>
                        <div class="event--result--type--name">П1</div>
                    </div>
                    <div class="stat--button">
                        <a href="https://stats.betradar.com/s4/?clientid=65&amp;language=ru&amp;matchid=11953108" title="Перегляд статистики"
                            target="_blank">
                            <i class="fav-icon"></i>
                        </a>
                    </div>
                    <div class="video--button">
                        <span class="video-block" title="Для перегляду відео трансляції необхідний баланс на обраному гаманці в еквіваленті понад 400 грн., або зробіть ставку в еквіваленті мінімум 40 грн.">
                            <i class="fav-icon"></i>
                        </span>
                    </div>
                    <!-- react-empty: 1620 -->
                </div>
                <div class="result--block result-count-1 sp_1">
                    <div class="result--content">
                        <div class="result--absolute">
                            <div class="result--block--entire">
                                <!-- react-empty: 1625 -->
                                <div class="result--item result--item--ft">
                                    <div class="result--score">0</div>
                                    <div class="result--score">0</div>
                                </div>
                                <div class="result--item result--item--cur">
                                    <div class="result--score">0</div>
                                    <div class="result--score">0</div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
                <div class="fav--button">
                    <button class="" title="Додати до обраних/Прибрати з обраних">
                        <i class="fav-icon"></i>
                    </button>
                </div>
                <ul class="outcome_list outcome-count-3 count-0">
                    <li>
                        <label class="outcome--empty">
                            <button></button>
                        </label>
                    </li>
                    <li>
                        <label class="outcome--empty">
                            <button></button>
                        </label>
                    </li>
                    <li>
                        <label class="outcome--empty">
                            <button></button>
                        </label>
                    </li>
                </ul>
                <ul class="outcome_list outcome-count-3 count-1">
                    <li class="outcome">
                        <label class="">
                            <u title="Славен Белупо (+0.5)">1 (+0.5)</u>
                            <span title="Славен Белупо (+0.5)">Славен Белупо (+0.5)</span>
                            <button>1.10</button>
                        </label>
                    </li>
                    <li class="param">
                        <span>+0.5</span>
                    </li>
                    <li class="outcome">
                        <label class="">
                            <u title="Істра 1961 (-0.5)">2 (-0.5)</u>
                            <span title="Істра 1961 (-0.5)">Істра 1961 (-0.5)</span>
                            <button>5.75</button>
                        </label>
                    </li>
                </ul>
                <ul class="outcome_list outcome-count-3 count-2 has-param">
                    <li>
                        <label class="outcome--empty">
                            <button></button>
                        </label>
                    </li>
                    <li>
                        <label class="outcome--empty">
                            <button></button>
                        </label>
                    </li>
                    <li>
                        <label class="outcome--empty">
                            <button></button>
                        </label>
                    </li>
                </ul>
                <div class="event--more">
                    <button>+0</button>
                </div>
            </div>
        </div>
    </li>
</ul>
</li>
<li class="category--block sp_1">
    <div class="caterory--head">
        <div class="outcomes--name">
            <div class="category--name">
                <span>Йорданія | Дивізіон 1</span>
            </div>
            <ul class="count--label count-0 outcome-count-3">
                <li title="1">1</li>
                <li title="X">X</li>
                <li title="2">2</li>
            </ul>
            <ul class="count--label count-1 outcome-count-3 has-param">
                <li title="1">1</li>
                <li>Фора</li>
                <li title="2">2</li>
            </ul>
            <ul class="count--label count-2 outcome-count-3 has-param">
                <li title="Б">Б</li>
                <li>Тотал</li>
                <li title="М">М</li>
            </ul>
            <div class="close--category"></div>
        </div>
    </div>
    <ul class="events--list">
        <li>
            <div class="event--head-block">
                <u></u>
                <div class="event--head">
                    <div class="event--name--info">
                        <div class="event--name two--name">
                            <span>Етхад Аль-Рамта</span>
                            <span>Шабаб Аль Хусейн</span>
                        </div>
                        <div class="event--short--info">
                            <div class="event--line--position">
                                <span>4672</span>
                                <b>1491</b>
                            </div>
                            <div class="time--block">
                                <div class="event--timer">41:14</div>
                            </div>
                            <div class="event--result--type--name">П1</div>
                        </div>
                        <div class="stat--button">
                            <i class="fav-icon"></i>
                        </div>
                        <div class="video--button">
                            <span class="video-block" title="Для перегляду відео трансляції необхідний баланс на обраному гаманці в еквіваленті понад 400 грн., або зробіть ставку в еквіваленті мінімум 40 грн.">
                                <i class="fav-icon"></i>
                            </span>
                        </div>
                        <!-- react-empty: 720 -->
                    </div>
                    <div class="result--block result-count-1 sp_1">
                        <div class="result--content">
                            <div class="result--absolute">
                                <div class="result--block--entire">
                                    <!-- react-empty: 725 -->
                                    <div class="result--item result--item--ft">
                                        <div class="result--score">0</div>
                                        <div class="result--score">0</div>
                                    </div>
                                    <div class="result--item result--item--cur">
                                        <div class="result--score">0</div>
                                        <div class="result--score">0</div>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                    <div class="fav--button">
                        <button class="" title="Додати до обраних/Прибрати з обраних">
                            <i class="fav-icon"></i>
                        </button>
                    </div>
                    <ul class="outcome_list outcome-count-3 count-0">
                        <li class="outcome">
                            <label class="">
                                <u title="Етхад Аль-Рамта">1</u>
                                <span title="Етхад Аль-Рамта">Етхад Аль-Рамта</span>
                                <button>2.55</button>
                            </label>
                        </li>
                        <li class="outcome">
                            <label class="">
                                <u title="Нічия">X</u>
                                <span title="Нічия">Нічия</span>
                                <button>2.30</button>
                            </label>
                        </li>
                        <li class="outcome">
                            <label class="">
                                <u title="Шабаб Аль Хусейн">2</u>
                                <span title="Шабаб Аль Хусейн">Шабаб Аль Хусейн</span>
                                <button>3.70</button>
                            </label>
                        </li>
                    </ul>
                    <ul class="outcome_list outcome-count-3 count-1">
                        <li class="outcome">
                            <label class="">
                                <u title="Етхад Аль-Рамта (0.0)">1 (0.0)</u>
                                <span title="Етхад Аль-Рамта (0.0)">Етхад Аль-Рамта (0.0)</span>
                                <button>1.55</button>
                            </label>
                        </li>
                        <li class="param">
                            <span>0.0</span>
                        </li>
                        <li class="outcome">
                            <label class="">
                                <u title="Шабаб Аль Хусейн (0.0)">2 (0.0)</u>
                                <span title="Шабаб Аль Хусейн (0.0)">Шабаб Аль Хусейн (0.0)</span>
                                <button>2.20</button>
                            </label>
                        </li>
                    </ul>
                    <ul class="outcome_list outcome-count-3 count-2">
                        <li class="outcome">
                            <label class="">
                                <u title="Більше (1.5)">Б (1.5)</u>
                                <span title="Більше (1.5)">Більше (1.5)</span>
                                <button>2.40</button>
                            </label>
                        </li>
                        <li class="param">
                            <span>1.5</span>
                        </li>
                        <li class="outcome">
                            <label class="">
                                <u title="Менше (1.5)">М (1.5)</u>
                                <span title="Менше (1.5)">Менше (1.5)</span>
                                <button>1.47</button>
                            </label>
                        </li>
                    </ul>
                    <div class="event--more">
                        <button>+20</button>
                    </div>
                </div>
            </div>
        </li>
        <li>
            <div class="event--head-block">
                <u></u>
                <div class="event--head">
                    <div class="event--name--info">
                        <div class="event--name two--name">
                            <span>Аль Джаліл</span>
                            <span>Аль-Тора</span>
                        </div>
                        <div class="event--short--info">
                            <div class="event--line--position">
                                <span>4521</span>
                                <b>1491</b>
                            </div>
                            <div class="time--block">
                                <div class="event--timer">37:43</div>
                            </div>
                            <div class="event--result--type--name">П1</div>
                        </div>

1 个答案:

答案 0 :(得分:0)

首先:我如何计算'li'块?

回答:使用driver.FindElements(By.XPath("//*[@id='livediv']/div/div[2]/ul/li[1]/ul/li"))

这将返回一个WebElement列表(在您的情况下,所有将是li元素)

然后您可以使用类似list.size();的内容来计算li块的数量。

最后一个:继续开启的最佳方法是什么?

您应该只初始化一次浏览器实例。并在任何地方旋转驱动程序对象的引用,在少数情况下,您可能希望使用构造函数