我正在使用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”字段之后),但我仍然无法获得该值。任何人都可以帮我解决问题吗?
答案 0 :(得分:1)
问题在于,对于此特定扩展,由于“来自”网址的长度,用户数量不可见。 Selenium通常只适用于文档中的可见元素。
我建议通过javascript执行来获取此值:
userStr = browser.execute_script("return document.getElementsByClassName('webstore-f-g-He')[0].textContent")