(PYTHON) 如何获取子元素 (Selenium)
Posted
技术标签:
【中文标题】(PYTHON) 如何获取子元素 (Selenium)【英文标题】:(PYTHON) How to get sub elements (Selenium) 【发布时间】:2017-08-22 20:15:30 【问题描述】:所以我真的是 python 新手,我想在一个名为 roblox 的网站上结交一些朋友,以便学习。这是我的代码现在所在的位置:
from selenium import webdriver
ff = webdriver.FireFox()
ff.get("https://www.roblox.com/home")
element = driver.find_element_by_class("col-xs-12 section home-friends"[0])
where I am currently
我想获取文本“Friends (2)”
有什么办法吗?
【问题讨论】:
【参考方案1】:你需要的是:
text = driver.find_element_by_class("col-xs-12 section home-friends")
.find_element_by_tag_name("h3").text
如果超过 1 ,可以先找到 class= "container-header" 的元素:
text = driver.find_element_by_class("col-xs-12 section home-friends")
.find_element_by_class_name("container-header").find_element_by_tag_name("h3").text
【讨论】:
from selenium import webdriver ff = webdriver.Firefox() ff.get("roblox.com/home") element = ff.find_element_by_class_name("col-xs-12 section home-friends"[0])。 find_element_by_class_name("container-header"[0]).find_element_by_tag_name("h3").text print (element) input("hi") 你是这样做的吗? 首先,在 find_element_by_class_name("container-header"[0]) - 不应该有 [0]。其次,确保您已登录网站 问题和答案都有2个问题:1)selenium
中没有方法find_element_by_class()
,2)find_element_by_class_name()
中不能使用复合类名【参考方案2】:
您不能将复合类名称与 find_element_by_class_name()
一起使用(不仅仅是 ..by_class() 而是 ..by_class_name() !),但您仍然可以使用它在CSS
选择器中,比如
ff.find_element_by_css_selector(".col-xs-12.section.home-friends")`
如果需要解压"Friends (2)"
,试试:
elem_text = ff.find_element_by_css_selector("div.col-xs-12.section.home-friends h3").text
【讨论】:
好的,我应该使用什么版本的python? 这并不重要:selenium
支持最新的Python 2.X
和Python 3.X
版本
from selenium import webdriver ff = webdriver.Firefox() ff.get("roblox.com/home") element = ff.find_element_by_css_selector("div.col- xs-12.section.home-朋友 h3").text print (element) input("hi") 还是会报错:gyazo.com/8d12a2b204091e86e999a9a37e96039a
您没有获得所需的值?
添加了问题图片以上是关于(PYTHON) 如何获取子元素 (Selenium)的主要内容,如果未能解决你的问题,请参考以下文章