Есть ли способ найти элемент по его потомкам? - PullRequest
1 голос
/ 20 марта 2020

Я пытаюсь найти элемент, который не отличается от некоторых других элементов, но его потомок отличается от других в классе. HTML:

<div class="grid x4" id="grid">
    <div><span class="fa fa-book" style="display: none;"></span></div> #⬅for example this element
    <div><span class="fa fa-birthday-cake" style="display: none;"></span></div>
    <div><span class="fa fa-bolt" style="display: none;"></span></div>
    <div><span class="fa fa-cube" style="display: none;"></span></div>
    <div><span class="fa fa-coffee" style="display: none;"></span></div>
    <div><span class="fa fa-car" style="display: none;"></span></div>
    <div><span class="fa fa-birthday-cake" style="display: none;"></span></div>
    <div><span class="fa fa-book" style="display: none;"></span></div>
    <div><span class="fa fa-cube" style="display: none;"></span></div>
    <div><span class="fa fa-bomb" style="display: none;"></span></div>
    <div><span class="fa fa-car" style="display: none;"></span></div>
    <div><span class="fa fa-bomb" style="display: none;"></span></div>
    <div><span class="fa fa-cubes" style="display: none;"></span></div>
    <div><span class="fa fa-coffee" style="display: none;"></span></div>
    <div><span class="fa fa-cubes" style="display: none;"></span></div>
    <div><span class="fa fa-bolt" style="display: none;"></span></div>
</div>

Взгляд на веб-сайт может быть полезным. Следующий код может найти дочерний элемент, но есть ли способ найти элемент (не дочерний)?

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

browser = webdriver.Firefox()
browser.get('http://zzzscore.com/memory/')
elements = browser.find_elements_by_xpath('//span[@class= "fa fa-book"]')

1 Ответ

1 голос
/ 20 марта 2020

Да, вы выбрали родителей с xpath в этом случае, когда вы знаете, что родительский тег является div, просто используйте это:

elements = browser.find_elements_by_xpath('//span[@class= "fa fa-book"]/parent::div')

Если вы не знаете, какой именно родитель, вы можете заменить тег имя с *

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