无法在硒中找到元素

时间:2016-11-03 07:38:56

标签: python selenium selenium-webdriver

我正试图找到其中一个元素(投票或投票):

<div class="votingWrapper ">
            <span class="voteBtn voteUp " data-postid="c4fcff79-7f73-493c-b6d8-f05ff1962897"></span>
            <span class="postRank">
                <span class="rankWrapper wrapper_up" data-points="1320">+1.3k</span>
                    <span class="rankWrapper wrapper_down" data-points="512">-512</span>
            </span>

                <span class="voteBtn voteDown " data-postid="c4fcff79-7f73-493c-b6d8-f05ff1962897"></span>
        </div>

我试图通过类,id,xpath(很多类型)找到它,但是我为所有尝试都获得了NoSuchElementException。

element = driver.find_element_by_id("c4fcff79-7f73-493c-b6d8-f05ff1962897")

element = driver.find_element_by_class_name("voteBtn voteDown ")

element = driver.find_element_by_xpath('//*[@id="c4fcff79-7f73-493c-b6d8-f05ff1962897"]/div[1]/span[3]')

我搜索了3个小时怎么做但我失败了。这是不可能的。

任何人都可以给我一些提示吗?

4 个答案:

答案 0 :(得分:1)

您一次通过单班

element_up = driver.find_element_by_class_name("voteUp")
element_down = driver.find_element_by_class_name("voteDown")

答案 1 :(得分:1)

通常不推荐在html代码中使用空格,但您的问题可以轻松解决。 在CSS中,您可以访问具有类名的div,其名称与使用点的空格分隔。 示例:

<span class="voteBtn voteUp " data-postid="c4fcff79-7f73-493c-b6d8-f05ff1962897"></span>

可以通过以下方式在CSS文件中访问:

.voteBtn.voteUp {}

您可以使用与硒相同的技术和单个衬垫:

element = driver.find_element_by_css_selector("span.voteBtn.voteDown")

答案 2 :(得分:0)

尝试以下XPath(如果它们不在框架中):

找到voteUp:

//span[contains(@class,"voteBtn voteUp")]

找到voteDown:

//span[contains(@class,"voteBtn voteDown")]

如果它们是inside a frame(检查您要查找的元素是child标记的iframe元素),那么先find the frame然后{{ 1}}到它。然后使用XPath查找元素。

答案 3 :(得分:0)

CSS投票:div.votingWrapper > span

 span[class*='voteUp']

CSS for vote down:div.votingWrapper > span:nth-child(3)

span[class*='voteDown']