我正在使用 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>
我嘗試的第一件事是簡單地單擊元素,然后在<i>不起作用時單擊其下方的元素:
addQLButton = driver.find_element(By.CLASS_NAME, "addCard")
addQLButton.click()
addQLButton = driver.find_element(By.CLASS_NAME, "btnAdd")
addQLButton.click()
我已經嘗試WebDriverWait在 v-card<div>和<i>element 上使用以確保它們在被點擊之前可用,它通過沒有任何問題:
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 中,我確信我選擇了正確的視窗,因為我仍然能夠與其元素進行互動。
我有點不知所措,任何幫助將不勝感激。如果我沒有足夠清楚地解釋問題,我很樂意回答任何澄清問題。
uj5u.com熱心網友回復:
我設法讓它與一些 javascript 一起作業:
js = "document.querySelector('.btnAdd').click();"
driver.execute_script(js)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/363279.html
標籤:Python 硒 Vue.js Vuetify.js
