我想通过使用搜寻器在Google Analytics(分析)上下载用户数据,因此我使用Selenium编写了一些代码。但是,我无法单击“导出”按钮。它总是显示错误“没有这样的元素”。我尝试使用find_element_by_xpath,by_name和by_id。 我在下面上传了GA页面的检查。
我尝试:
driver.find_element_by_xpath("//*[@class='download-link']").click()
driver.find_element_by_xpath('//*[@id="ID-activity-userActivityTable"]/div/div[2]/span[6]/button')
driver.find_element_by_xpath('//*[@class='_GAD.W_DECORATE_ELEMENT.C_USER_ACTIVITY_TABLE_CONTROL_ITEM_DOWNLOAD']')
Python代码:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
driver = webdriver.Chrome('/Users/parkjunhong/Downloads/chromedriver')
driver.implicitly_wait(3)
usrid = '1021'
url = 'https://analytics.google.com/analytics/web/#/report/app-visitors-user-activity/a113876882w169675624p197020837/_u.date00=20190703&_u.date01=20190906&_r.userId='+usrid+'&_r.userListReportStates=%3F_u.date00=20190703%2526_u.date01=20190906%2526explorer-
table.plotKeys=%5B%5D%2526explorer-table.rowStart=0%2526explorer-
table.rowCount=1000&_r.userListReportId=app-visitors-user-id'
driver.get(url)
driver.find_element_by_name('identifier').send_keys('ID')
idlogin = driver.find_element_by_xpath('//*[@id="identifierNext"]/span/span')
idlogin.click()
driver.find_element_by_name('password').send_keys('PASSWD')
element = driver.find_element_by_id('passwordNext')
driver.execute_script("arguments[0].click();", element)
#login
driver.find_element_by_xpath("//*[@class='download-link']").click()
#click the download button
错误:
Message: no such element: Unable to locate element
答案 0 :(得分:0)
您可以尝试输入以下文字:
如果您想点击'Export'-
//button[contains(text(),'Export')]
答案 1 :(得分:0)
您的click元素位于iFrame中(iFrame id =“ galaxyIframe” ...)。因此,您需要告诉驱动程序从“主”页面切换到所述iFrame。如果您在#login
之后添加此代码行,则应该可以:
driver.switch_to.frame(galaxyIframe)
(如果框架没有名称,则可以使用:iframe = driver.find_element_by_xpath("xpath-to-frame")
,然后使用driver.switch_to.frame(iframe)
要返回默认框架,请使用:
driver.switch_to.default_content()
爬行GA通常是一种痛苦。不仅仅是因为您到处都有这些iFrame。 除此之外,我建议您研究puppeteer,这是履带板上的新手。即使从python切换到javascript的前景可能令人生畏,还是值得的!一旦进入,硒将感觉非常笨重。