【问题标题】:How to click a Vue/Vuetify card using selenium in python?如何在 python 中使用 selenium 单击 Vue/Vuetify 卡?
【发布时间】:2021-11-19 01:54:05
【问题描述】:

我使用的是 selenium 4.0.0 版本,供参考。

我正在尝试单击充当按钮的 Vuetify 卡片元素,但我遇到了 element not interactable: [object HTMLDivElement] has no size and location 或只是 element not interactable 错误。过去我已经能够用动作链解决类似的问题,但它似乎不适用于这个。

这是按钮所在的列表元素:

<li class="lu-li list-item" data-v-711d8d7a="" style="display: flex;">
    <div class="addCard v-card v-card--link v-sheet theme--light" data-v-711d8d7a="" tabindex="0" onselectstart="return false;">
        ::before
        <i class="v-icon notranslate btnAdd material-icons theme--light enableIcon" data-v-711d8d7a="" aria-hidden="true">
            add
            ::after
        </i>
    </div>
</li>

我尝试的第一件事是简单地单击元素,然后单击它下面的 &lt;i&gt; 元素,但不起作用:

addQLButton = driver.find_element(By.CLASS_NAME, "addCard")
addQLButton.click()

addQLButton = driver.find_element(By.CLASS_NAME, "btnAdd")
addQLButton.click()

我已经尝试在 v-card &lt;div&gt;&lt;i&gt; 元素上使用 WebDriverWait 以确保它们在被点击之前可用,它通过没有任何问题:

WebDriverWait(driver, timeout=10).until(lambda d: d.find_element(By.CLASS_NAME, "addCard"))
WebDriverWait(driver, timeout=10).until(lambda d: d.find_element(By.CLASS_NAME, "btnAdd"))

我已经尝试使用动作链来确保元素可见(这在过去也有类似的错误),但我仍然遇到同样的问题:

addQLButton = driver.find_element(By.CLASS_NAME, "addCard")
actions.move_to_element(addQLButton).perform()
driver.execute_script("arguments[0].click();", addQLButton)

addQLButton = driver.find_element(By.CLASS_NAME, "btnAdd")
actions.move_to_element(addQLButton).perform()
driver.execute_script("arguments[0].click();", addQLButton)

元素不在 iframe 中,我确信我选择了正确的窗口,因为我仍然能够与其元素交互。

我有点茫然,任何帮助将不胜感激。如果我没有足够清楚地解释问题,我很乐意回答任何澄清问题。

【问题讨论】:

  • 它在哪个网站上?
  • @ArundeepChohan 这是我公司运营的内部网站,所以很遗憾我不能分享整个页面。如果您有特定的需求,我或许可以为您提供更多信息
  • 尝试从开发者工具中复制它的选择器并使用 css 选择器,因为我想知道你是否拥有正确的元素。
  • 我已经对容器中的每个元素都进行了尝试,但我仍然没有任何运气。我也尝试过通过 xpath 进行选择,但这似乎也无济于事。我认为这可能与 aria-hidden="true" 属性有关,但我不知道如何将其更改为 false

标签: python selenium vue.js vuetify.js


【解决方案1】:

我设法让它与一些 javascript 一起工作:

js = "document.querySelector('.btnAdd').click();"
driver.execute_script(js)

【讨论】:

    猜你喜欢
    • 2018-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-09
    • 1970-01-01
    • 2021-03-31
    • 2019-09-01
    • 1970-01-01
    相关资源
    最近更新 更多