使用 Python 模块的互联网点击

Internet Clicks using Python Module

问题:

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.

解决方法:

因此,为了绕过 pro 许可证对刷新的限制,我使用 PYAUTOGUI 创建了代码,它将登录到我的 Power BI 服务器并为我单击该刷新按钮,我每 5 分钟 运行 这一次。

解决问题: 问题是,此 PYAUTOGUI 仅在计算机处于活动状态时才能工作,即我已登录。

要求: 存在哪些模块以便我可以在后台执行相同的功能(无需让计算机登录或唤醒)?

注意:

我已经使用代码 pip search mousepip search click 等从命令提示符搜索包,但这不是最好的时间利用方式。

使用 selenium 非常有可能。

首先,确保您的环境中安装了 selenium。 运行 以下命令:

pip install selenium

然后您需要确保在您的 PATH 变量中安装了正确的 chrome 可执行文件或明确写入您的代码(后一个选项意味着您可以像我一样使用配置文件下面,以避免发布凭据)。您可以在此处下载适用于您的 Chrome 版本的 chrome 可执行文件: https://chromedriver.chromium.org/downloads

(您可以使用任何浏览器执行此操作,我的选择是 Chrome,但您必须根据需要调整代码)

现在下面的代码应该适合你了:

注意:time 模块在这里是必不可少的,因为如果您的代码执行速度快于 DOM 加载,那么 selenium/python 将 return错误通常是说它找不到您要查找的元素(因为它们尚未加载)

'''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 次刷新的穷人方法。它还有助于避免仅仅为了增加数据源计划更新的数量而不得不购买昂贵的计划。

希望对您有所帮助