javascript - 在 Mac 上的 Excel 上从 VBA 调用 Javascript

标签 javascript excel vba macos web-scraping

我想在 Excel 上创建一个 VBA 宏,只需单击按钮即可打开浏览器(chrome 或 safari)登录网站,提取所需的浮点值,然后使用该值填充工作表中的给定单元格。

网上有关于如何使用 Internet Explorer 实现此目的的示例,但这在 Mac 上不可用。我也看过使用 Selenium 的指南,但这似乎不适用于 Mac。

JavaScript 本身是这样的(在某个网站打开浏览器后):

document.getElementById("username").value = "username"
document.getElementById("password").value = "password"
document.getElementsByClassName("button")[0].click()
value = parseFloat(document.getElementsByClassName("value")[1].innerText.slice(1))

最佳答案

我通过使用 python-selenium 的组合解决了这个问题和 xlwings 。我的 VBA 调用 RunPython ("import python_script; python_script.fun()")

python_script.py

import xlwings as xw
from selenium import webdriver

def fun():
    # Creates a reference to the calling Excel file
    wb = xw.Book.caller()

    # opens chrome
    chrome_driver_path = '/usr/local/bin/chromedriver'
    driver = webdriver.Chrome(chrome_driver_path)

    # open website and login
    driver.get('url')
    driver.find_element_by_id('username').send_keys('username')
    driver.find_element_by_id('password').send_keys('password')
    driver.find_element_by_name('buttonId').click()

    # finds member price sum
    table_body = driver.find_element_by_xpath("//*[@class='classname']").text
    price = float(table_body.split()[2][1:])

    # closes chrome
    driver.quit()

    # changes cell value
    sheet = wb.sheets['sheetname']
    sheet.range('cell').value = price

关于javascript - 在 Mac 上的 Excel 上从 VBA 调用 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52591340/

相关文章:

javascript - 在飞行中更改 MathJax 的 "width"的 "linebreaks"

excel - Vlookup Excel,引用不同的工作表

python - Pandas 的表现就像两个有条件的数据帧的计数一样

excel - 在 excel 中计算 c(1) + ... + c(i) 的总和

vba - Excel VBA Ribbon getEnabled 代码运行时未调用

excel - 使用 SAP GUI 脚本处理 SAP GUI 中的错误

vba - 循环后不考虑 wB.Save 和 wB.Close

javascript - 为什么 JavaScript 中 << 0 会删除数字的小数部分?

javascript - Firefox 43.0.2 中的“let”关键字不起作用

javascript - 快速替换 javascript 中的 html 注释的方法