Selenium无法在网页上获取某些数据

时间:2014-04-07 07:26:20

标签: python selenium

我正在使用Selenium和Python来获取有关Chrome扩展程序的一些数据。我想在this page获取特定扩展程序的用户数量。我使用下面的代码:

from selenium import webdriver
from selenium.common.exceptions import ElementNotVisibleException, NoSuchElementException
import time  

def create_browser(first_page=None):
        print "Starting"
        browser = webdriver.Chrome('/home/user/ChromeDriver/chromedriver')
        if first_page:
            browser.get(first_page);
        print "Done."
        return browser


    def wait_find_element_by_xpath(driver, path):
        counter = 0
        while counter < 7:
            try:
                elem = driver.find_element_by_xpath(path)
                break
            except NoSuchElementException:
                time.sleep(1)
                counter += 1
                elem = None
        return elem

    URL = 'https://chrome.google.com/webstore/detail/id-vault/jlljbiieciifehccmokcpnmlklpaimpa/details' 

    browser = create_browser()
    browser.get(URL)
    time.sleep(7) 
    #Get number of users
    userStr = wait_find_element_by_xpath(browser, './/span[@class="webstore-f-g-He"]')
    #print "\n\n\n No. of Users: "
    #print userStr
    #print userStr.text
    #print "\n\n\n-----"
    noOfUserStr = userStr.text.replace(" users", "")
    noOfUsers = noOfUserStr.replace(",", "")
    users = int(noOfUsers)

我的问题是我无法获得那个特定页面的用户数量。相反,我收到错误:ValueError: invalid literal for int() with base 10: ''

我发现这很奇怪,因为代码适用于其他扩展。此外,即使您单击查看源(右键单击&> Inspect元素),您也会看到源中的用户数(在“from”字段之后),但我仍然无法获得该值。任何人都可以帮我解决问题吗?

1 个答案:

答案 0 :(得分:1)

问题在于,对于此特定扩展,由于“来自”网址的长度,用户数量不可见。 Selenium通常只适用于文档中的可见元素。

我建议通过javascript执行来获取此值:

userStr = browser.execute_script("return document.getElementsByClassName('webstore-f-g-He')[0].textContent")