Каковы свойства find_element_by_class_name в selenium python?

browser = webdriver.Firefox()
browser.get(url)
divs = browser.find_elements_by_class_name('class')

Есть ли какие-нибудь свойства browser.find_element_by_class_name('class')?

Например, если у меня есть такой код:

<div class="foo">
    <a href="" class="poo">one</a>
    <a href="" class="poo">two</a>
    <a href="" class="poo">three</a>
</div>
<div class="foo">
    <a href="" class="koo">one</a>
    <a href="" class="koo">two</a>
    <a href="" class="koo">three</a>
</div>

Я хочу получать текст из тегов "а". Но сначала я хочу получить дивы. так что я делаю что-то вроде этого:

divs = browser.find_elements_by_class_name('foo')

А теперь я хочу получить все теги "a" из моего массива div. Является ли это возможным?

2 ответа

Решение

Вы можете находить элементы в элементе, извлекать их с помощью вложенного цикла:

divs = browser.find_elements_by_class_name('foo')

for div in divs:
    elements = div.find_elements_by_tag_name('a')
    for element in elements:
        print(element.text)

CLASS_NAME

CLASS_NAME- это одна из поддерживаемых Selenium стратегий локаторов, а также свойство интерфейса WebElement, которое получает и устанавливает значениеclass атрибут указанного элемента.

Чтобы получить тексты из<a> теги с родительским <div>теги, вы можете использовать любую из следующих стратегий локатора:

  • С помощью CLASS_NAME:

    print([my_elem.text for my_elem in WebDriverWait(driver, 10).until(EC.visibility_of_all_elements_located((By.CLASS_NAME, "koo")))])
    
  • С помощью CSS_SELECTOR:

    print([my_elem.text for my_elem in WebDriverWait(driver, 10).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "div.foo a.koo")))])
    
  • С помощью XPATH:

    print([my_elem.text for my_elem in WebDriverWait(driver, 10).until(EC.visibility_of_all_elements_located((By.XPATH, "//div[@class='foo']//a[@class='koo']")))])
    
Другие вопросы по тегам