Как отфильтровать элементы одного класса?
<html>
<body>
<p class="content">Link1.</p>
</body>
</html>
<html>
<body>
<p class="content">Link2.</p>
</body>
</html>
Как отфильтровать элементы одного класса?
<html>
<body>
<p class="content">Link1.</p>
</body>
</html>
<html>
<body>
<p class="content">Link2.</p>
</body>
</html>
Вы можете попытаться получить список всех элементов с помощью class = "content"
, используя find_elements_by_class_name strong >:
a = driver.find_elements_by_class_name("content")
Затем вы можете щелкнуть ссылку, которую ищете.
a
как пустой список, если сразу переназначаете его?
- person user124384; 09.09.2018
find_element_by_class_name
- person zvi; 08.08.2019
Согласно HTML:
<html>
<body>
<p class="content">Link1.</p>
</body>
<html>
<html>
<body>
<p class="content">Link2.</p>
</body>
<html>
Два (2) <p>
элемента имеют один и тот же класс content
.
Итак, чтобы отфильтровать элементы, имеющие один и тот же класс, т.е. content
, и создать список, вы можете использовать любой из следующих Стратегии поиска:
Использование class_name
:
elements = driver.find_elements_by_class_name("content")
Использование css_selector
:
elements = driver.find_elements_by_css_selector(".content")
Использование xpath
:
elements = driver.find_elements_by_xpath("//*[@class='content']")
В идеале, чтобы щелкнуть элемент, необходимо вызвать WebDriverWait для visibility_of_all_elements_located()
, и вы можете использовать любую из следующих стратегий поиска:
Использование CLASS_NAME
:
elements = WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.CLASS_NAME, "content")))
Использование CSS_SELECTOR
:
elements = WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, ".content")))
Использование XPATH
:
elements = WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.XPATH, "//*[@class='content']")))
Примечание. Вам необходимо добавить следующий импорт:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
Вы можете найти пару соответствующих обсуждений в:
Используйте nth-child, например: http://www.w3schools.com/cssref/sel_nth-child.asp
driver.find_element(By.CSS_SELECTOR, 'p.content:nth-child(1)')
или http://www.w3schools.com/cssref/sel_firstchild.asp
driver.find_element(By.CSS_SELECTOR, 'p.content:first-child')
Автор.CLASS_NAME еще не упоминается:
from selenium.webdriver.common.by import By
driver.find_element(By.CLASS_NAME, "content")
Это список атрибутов которые можно использовать в качестве локаторов в By:
CLASS_NAME
CSS_SELECTOR
ID
LINK_TEXT
NAME
PARTIAL_LINK_TEXT
TAG_NAME
XPATH