Посчитайте некоторые узлы по Selenium, используя xpath.C # - PullRequest
0 голосов
/ 14 мая 2018
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] Я собираюсь посчитать их, а затем использовать каждый номер в качестве идентификатора, чтобы получить номера игр. Это правильный путь? Потому что есть много блоков 'li', и я хочу получить значения в каждом из них. Проверьте скриншот: screenshot Каждый category--block sp_1 содержит несколько 'li'. И я хочу получить значения игры для каждого '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 голосов
/ 14 мая 2018

Первый : как подсчитать блоки 'li'?

Ответ : используйте driver.FindElements(By.XPath("//*[@id='livediv']/div/div[2]/ul/li[1]/ul/li"))

Это вернет список WebElement (в вашем случае все будут элементами li)

, затем вы можетеиспользуйте что-то вроде list.size(); для подсчета количества блоков li.

последний: Как лучше всего продолжать включаться?

Вы должны инициализировать свой экземпляр браузера только один раз.и поверните ссылку на объект драйвера куда угодно, возможно, вы захотите использовать constructor в некоторых случаях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...