python-3.x - 使用 Python 模块的 Internet 点击次数
问题描述
问题:
Power BI 在 pro-license 下,只允许数据源一天最多刷新 8 次,以 30 分钟为增量(使用 AM/PM 计时)。
这剥夺了我做出近乎实时决策的能力。所以目前,我的可视化仅从 9:30 开始每小时更新一次,更新发生 8 次,即总更新时间为 9:30、10:30、11:30、12:30、1:30、2: 30、3:30、4:30。
解决方法:
因此,为了绕过专业许可证对刷新的限制,我使用 PYAUTOGUI 创建了代码,该代码将登录到我的 Power BI 服务器并为我单击该刷新按钮,我每 5 分钟运行一次。
解决问题:问题在于,这个 PYAUTOGUI 仅在计算机处于活动状态(即我已登录)时才能工作。
请求:存在哪些模块,以便我可以在后台执行相同的功能(无需让计算机登录或唤醒)?
笔记:
我已经使用代码pip search mouse
,pip search click
等从命令提示符搜索包,但这不是最好的时间利用。
解决方案
这很可能使用硒。
首先,确保您的环境中安装了 selenium。运行以下命令:
pip install selenium
然后,您需要确保在 PATH 变量中或在代码中明确写入正确的 chrome 可执行文件(后一个选项意味着您可以使用我下面的配置文件,以避免发布凭据)。您可以在此处下载适用于您的 Chrome 版本的 chrome 可执行文件: https ://chromedriver.chromium.org/downloads
(您可以使用任何浏览器执行此操作,我的选择是 Chrome,但您必须根据需要调整代码)
现在下面的代码应该适合你:
注意:该time
模块在这里是必不可少的,因为如果您的代码执行速度比 DOM 加载速度快,那么 selenium/python 将返回一个错误,通常该错误是说它找不到您正在寻找的元素(因为它们尚未加载)
'''REQUIRED PACKAGES'''
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
import time
'''CONFIG FILE FOR CHROME EXECUTABLE & LOGIN INFO'''
from _config import chrome_executable, user_name, user_pass
'''LINK TO SIGN IN PAGE FOR POWER BI'''
powerbi = 'https://app.powerbi.com/home?redirectedFromSignup=1&noSignUpCheck=1&response=AlreadyAssignedLicense'
'''SET CHROME OPTIONS TO RUN IN INCOGNITO AND HEADLESS(no browser window)'''
option = webdriver.ChromeOptions()
option.headless = True
option.incognito = True
'''CREATE BROWSER OBJECT / NAVIGATE TO POWER BI / MAXIMIZE WINDOW'''
browser = webdriver.Chrome(executable_path=chrome_executable, options=option)
browser.get(powerbi)
browser.maximize_window()
'''WAIT / FIND AND FILL IN EMAIL FIELD / FIND AND CLICK NEXT BUTTON'''
time.sleep(4)
bi_email = WebDriverWait(browser, 5).until(EC.presence_of_element_located((By.ID, 'i0116')))
bi_email.send_keys(user_name)
bi_email.send_keys(Keys.ENTER)
'''WAIT / FIND AND FILL IN PASSWORD FIELD / FIND AND CLICK ON LOGIN BUTTON'''
time.sleep(4)
bi_pass = WebDriverWait(browser, 5).until(EC.presence_of_element_located((By.ID, 'i0118')))
bi_pass.send_keys(user_pass)
bi_pass.send_keys(Keys.ENTER)
'''THIS IS THE PROMPT THAT ASKS IF YOU WANT TO REMAIN LOGGED IN'''
'''WAIT / STAY ON CURRENT SELECTION / MOVE AND CLICK ON ADJACENT SELECTION'''
time.sleep(4)
yes_choice = browser.find_element_by_id('idSIButton9')
yes_choice.send_keys(Keys.SHIFT, Keys.TAB, Keys.ENTER)
'''WAIT / FIND AND CLICK ON MY WORKSPACE'''
time.sleep(7)
my_workspace_button = browser.find_element_by_class_name('workspaceName')
my_workspace_button.click()
'''CREATE MOUSE OBJECT'''
action = ActionChains(browser)
'''WAIT / FIND CORRECT ROW / CLICK ON REFRESH'''
time.sleep(4)
stock_alerts = browser.find_elements_by_xpath("//*[ text() = 'NAME OF YOUR DATA SOURCE' ]")
action.move_to_element(stock_alerts[-1]).click().send_keys(Keys.TAB).send_keys(Keys.ENTER).perform()
'''WAIT / CLOSE BROWSER'''
time.sleep(3)
browser.close()
这是为基本帐户绕过 Power BI 严格 8 次刷新的可怜人方式。它还有助于避免仅仅为了增加数据源计划更新的数量而购买昂贵的计划。
希望能帮助到你
推荐阅读
- bash - Bash 脚本 If 语句比较用户输入,找不到命令
- json - 如何修复 Python Elasticsearch 批量的 RequestError?
- apache-nifi - 如何在 RouteOnAtrribute 上应用条件以过滤 NIFI 中的 json 数据
- javascript - 在动态 html 元素上添加点击事件
- database - 使用和不使用 $elemMatch 的查询给了我相同的结果
- javascript - JSON数据转换(数组到对象)
- java - 如何访问 webcontent 文件夹中的资源
- java - How can we execute particular line of code only once in main method in java?
- tinymce - TinyMCE5: Remove from within all h1-h6 elements
- java - Java API 流文件到 ArrayList