2016-03-28 6 views
2

Я пытаюсь заставить Selenium нажать на кнопку View All Companies, но я не уверен, что я делаю неправильно. Она возвращает no element foundSelenium найти элемент и нажать на него

HTML код

<div class="screener-toggles"> 
    <div class="buttons"> 
    <span class="button selected" data-name="advanced-screener">Search by Screener<span data-name="advanced-screener" class="arrow selected"></span></span> 
    <span class="button" data-name="alpha-factors">Search by Alpha Factors<span data-name="alpha-factors" class="arrow"></span></span> 
    <span class="button" data-name="all-companies">View All Companies<span data-name="all-companies" class="arrow"></span></span> 
    </div> 
</div> 

код Python Я написал

element1 = driver.find_elements_by_class_name('View All Companies') 
element1.click() 
# I have tried all-companies instead of View All Companies as well. But still doesn't work 

Должен ли я не использовать find_elements_by_class_name?

Любой совет о том, что я делаю неправильно, очень ценится!

ответ

1

View All Companies является текстом, а не класс. Попробуйте посмотреть на текст с css_selector или xpath

element1 = find_element_by_css_selector('span:contains("View All Companies")') 

element1 = find_element_by_xpath('//span[contains(text(), "View All Companies")]') 

Или атрибутом data-name который содержит all-companies

element1 = find_element_by_css_selector('span[data-name*="all-companies"]') 
+0

Спасибо @Guy! Должен также рассмотреть 'css_selector' .. –

1

Да, вы не должны использовать find_elements_by_class_name вместо find_element_by_class_name.

find_elements_by_class_name используется, когда вы ожидаете, что ваш локатор вернет более 1 элемента. для конкретного элемента используйте только find_element_by_class_name.

Другое дело, что я не могу видеть какое-либо имя класса как View All Companies в вашем HTML-коде. Посмотрите, пожалуйста, в ваш HTML и выберите имя класса или другой локатор тщательно

Надеются, что это поможет вам

+0

Это был весь HTML, связанные с кнопками .. Есть еще один способ, нажав на кнопку на основе HTML, который я разместил? –

+0

Да, вы можете .. можете ли вы прокомментировать точный элемент/код HTML, который вы ищете –

2

попробовать: XPath "//span[contains(text(),'View All Companies')]"

+1

Спасибо @Leon. Это отлично работает! –

Смежные вопросы