Нажмите на дочерний элемент в соответствии с основным названием - PullRequest
0 голосов
/ 31 октября 2019

У меня есть div и несколько долгов. В каждом div у меня есть заголовок, результаты и заключительный div, на которые можно нажать. Как сделать событие click в этом последнем div в соответствии с поиском по названию?

У меня есть опыт работы с WebDriver и PHP, но я пробовал все это с помощью функции By.xpath, но безуспешно.

Пример: мне нужно нажать на <div class="Link_Text "></div>, если он содержит текст «Магия гонки 19» в <div classe="RaceTitle "></div>

Как?

$driver->findElement(By.xpath(" XPATH_HERE "))->click();

<div>
    <div class="races ">
        <div class="FixedRace ">
            <div class="RaceTitle ">Race 19 Magic</div>
            <div class="Link ">
                <div class="Link_Text ">See All</div>
            </div>
        </div>
        <div class="FixedRace ">
            <div class="RaceTitle ">8.57 Mega (Race 10)</div>
            <div class="Link ">
                <div class="Link_Text ">See All</div>
            </div>
        </div>
    </div>
</div>

Ответы [ 2 ]

0 голосов
/ 31 октября 2019

Чтобы щелкнуть <div> с текстом См. Все относительно <div> с текстом Гонка 19 Магия , вы можете использовать следующую Стратегию локатора :

  • XPath 1:

    $driver->findElement(By.xpath("//div[@class='RaceTitle ' and text()='Race 19 Magic']//following::div[1]/div[@class='Link_Text ' and text()='See All']"))->click();
    
  • XPath 2:

    $driver->findElement(By.xpath("//div[@class='RaceTitle ' and contains(., 'Race 19 Magic')]//following::div[1]/div[@class='Link_Text ' and text()='See All']"))->click();
    
0 голосов
/ 31 октября 2019

Я нашел следующий настроенный xpath в соответствии с вашим примером. Пожалуйста, дайте мне знать, работает или нет?

driver.findElement(By.xpath("//div[text()='See All']//parent::div[@class='Link ']//preceding-sibling::div[text()='Race 19 Magic']")).click();
...