我正试图找到其中一个元素(投票或投票):
<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个小时怎么做但我失败了。这是不可能的。
任何人都可以给我一些提示吗?
答案 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']