【问题标题】:Selenium WebDriver Python, search WebElementSelenium WebDriver Python,搜索 WebElement
【发布时间】:2015-12-23 23:28:10
【问题描述】:

我正在使用 Selenium 实时抓取一些内容,但我似乎无法搜索 WebElement,即使文档说我可以。

while True:
    try:
        member = self.pdriver.find_all("sv:member_profile")[index]
        self.pdriver.info_log("Found a member")
    except IndexError:
        self.pdriver.info_log("No more members")
        break

    member.highlight(style = self.pdriver.get_config_value("highlight:style_on_assertion_success"))

    profile = {}
    profile["name"] = member.findElement("sv:member_name").get_attribute('innerHTML')
    profile["image"] = member.findElement("sv:member_image").get_attribute('src')
    profile["link"] = member.findElement("sv:member_link").get_attribute('href')

    members.append(profile)
    index += 1

这会返回一个网页元素:

member = self.pdriver.find_all("sv:member_profile")[index]

我需要搜索,根据文档,这个元素也有 findElement 方法,似乎不是这样吗?

AttributeError: 'WebElement' 对象没有属性 'findElement'

【问题讨论】:

    标签: python selenium


    【解决方案1】:

    如错误所述,WebElement 对象没有属性findElement。根据sv:member_namesv:member_imagesv:member_link,您需要选择您需要使用的find_element_by_* methods中的哪一个。

    例如,如果 sv:member_name 是 CSS 选择器:

    profile["name"] = member.find_element_by_css_selector("sv:member_name").get_attribute('innerHTML')
    

    或者,您也可以使用find_element() 方法直接提供By 值:

    from selenium.webdriver.common.by import By
    
    profile["name"] = member.find_element(By.CSS_SELECTOR, "sv:member_name").get_attribute('innerHTML')
    

    【讨论】:

    • sv:member_name 使用 css 选择器: selector_dict['member_name'] = "cs:.fsl.fwb.fcb > a" 其中 .fsl.fwb.fcb > a 是成员的子项元素
    • 让它像这样工作:profile["name"] = member.find_element(By.CSS_SELECTOR, ".fsl.fwb.fcb > a").get_attribute('innerHTML') 非常感谢
    猜你喜欢
    • 2012-08-09
    • 2012-08-19
    • 1970-01-01
    • 1970-01-01
    • 2016-10-04
    • 1970-01-01
    • 1970-01-01
    • 2016-06-28
    • 1970-01-01
    相关资源
    最近更新 更多