【问题标题】:Greasemonkey Click Button without ID or Name没有 ID 或名称的 Greasemonkey 点击按钮
【发布时间】:2021-11-03 20:57:09
【问题描述】:

我正在尝试使用greasemonkey 自动单击此按钮。我尝试使用带有 ClassName 的 document.getElementsBy[ClassName/Name/TagName] 找到对这个按钮的引用,我找到了按钮,但不是我需要的那个。有什么想法可以让他的点击事件自动化吗?

<button type="button" class="ml-2 mt-2 v-btn v-btn--depressed theme--light v-size--default amber darken-1 white--text ">
    ::before
    <span class="v-btn__content">
        <!----> 
        Überspringen
        <i aria-hidden="true" class="v-icon notranslate v-icon--right material-icons theme--light">
            redo
            ::after
        </i>
        <!---->
    </span>
</button>

Screenshot from Firefox Inspector with Click Function

提前致谢!

【问题讨论】:

    标签: automation greasemonkey


    【解决方案1】:

    只需使用xpath 进行元素搜索:

    document.evaluate(XPATH, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;

    1. 您可以使用class 参数代替idname
    • xpath://button[@class='ml-2 mt-2 v-btn v-btn--depressed theme....']

    如果你不需要使用所有值,你可以使用contains关键字:

    • xpath: //button[contains(@class, 'ml-2 m2-2')]
    • CSS: button[class*='ml-2 m2-2']

    当然,这个值必须是唯一的。

    1. 您可以搜索子元素并返回父元素:
    • //button/span[@class='v-btn__content']/i/../..
    1. 您可以使用文本进行搜索(如果位置可能更改,则为不好的做法)
    • //button/span[text()='Überspringen']/..

    【讨论】:

    • 感谢您到目前为止的详细回答。我在使用 document.evaluate 时收到“未捕获的 ReferenceError:未定义 XPATH”。在 FireFox-Inspektor 中,我可以复制 CSS-Selektor 和 XPATH 有没有一种方法可以在 tampermonkey 的点击侦听器上使用它作为变量?
    • 您需要使用真正的 xpath,除了 XPATH 字(我提供了示例,请尝试 //button/span[text()='Überspringen']/..//button[contains(@class, 'ml-2 m2-2')]/span/i。您可以确定 - 只需按 F12 调用 DevTools,选择 Elements 选项卡(对于 Chrome ),然后按CTRL+F。现在您可以粘贴我提供的任何 xpathes 并查看结果(如果结果中超过 1 个 - 您需要添加额外的限制
    • 例如尝试粘贴到控制台:document.evaluate("(//button[contains(@class, 'ml-2 m2-2')]/span/i)[1]", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.click()
    • 对我最好的感谢是提高成绩或接受我的回答;)
    • 我尝试了一些事情,发现当我重新加载页面并使用您的代码时,它告诉我Uncaught TypeError: Cannot read properties of null (reading 'click') at &lt;anonymous&gt;:1:165 那是因为document.[...].singleNodeValue 在我曾经从元素中复制 XPATH 后返回null我可以在控制台中使用它,但不能与 Tampermonkey 一起使用……我尝试了很多次,我所做的只是复制 XPATH 而已。 PS:已经为你的帮助投票了,但我不能因为不到 15 分。
    猜你喜欢
    • 2015-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多