2016-03-28 105 views
2

我想让硒单击View All Companies按钮,但我不知道我做错了什么。它返回no element found硒找元素,并点击它

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_selectorxpath

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

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

或用包含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

另一件事是我无法在您的HTML代码中看到任何类名为View All Companies。请看看你的HTML和选择的类名或其他定位仔细

希望它会帮助你

+0

这是关系到按钮整个HTML的data-name属性看..有基于点击按钮的另一种方式我发布的HTML? –

+0

是的,你可以..你可以请评论你正在寻找的确切元素/ HTML代码 –

2

尝试的XPath"//span[contains(text(),'View All Companies')]"

+1

谢谢@Leon。这很好用! –