簡體   English   中英

如何使用 Selenium 單擊 Python 中的擴展器按鈕?

[英]How do you click an expander button in Python with Selenium?

我正在為 selenium 編寫腳本以打開網頁,然后單擊一系列按鈕。 第一個按鈕是 Expander 按鈕,如下圖所示

展開按鈕

檢查按鈕的 HTML 代碼如下,但按鈕本身是“class="dojoxExpandoIcon dojoxExpandoIconLeft qa-button-toc"

<div class="dojoExpandoPaneInner">
        <div data-dojo-attach-point="titleWrapper" class="dojoxExpandoTitle">
            <div class="dojoxExpandoContainer">
                <div class="dojoxExpandoIcon dojoxExpandoIconLeft qa-button-toc" data-dojo-attach-point="iconNode" data-dojo-attach-event="ondijitclick:_onIconNodeClick" tabindex="0" aria-controls="slideout"><span class="a11yNode">X</span></div>
            </div>

xpath 如下:

/html[@class='dj_webkit dj_chrome dj_contentbox has-webkit has-no-quirks svg']/body[@class='claro original']/div[@id='border']/div[@id='slideout']/div[@class='dojoExpandoPaneInner']/div[@class='dojoxExpandoTitle']/div[@class='dojoxExpandoContainer']/div[@class='dojoxExpandoIcon dojoxExpandoIconLeft qa-button-toc']

為了找到這個按鈕,我一次嘗試了以下代碼。

driver.find_element_by_css_selector("div[class^='dojoxExpandoIcon']")    # find expander by class name
# driver.find_element_by_css_selector("div[class^='dojoxExpandoIcon dojoxExpandoIconLeft qa-button-toc']")    # find expander by class name
# driver.find_element_by_css_selector("div.dojoxExpandoContainer")

但是,它們都沒有工作,並導致錯誤,例如

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"div.dojoxExpandoIcon.dojoxExpandoIconLeft.qa-button-toc"}

我在這里做錯了什么嗎?

嘗試等到定位器可點擊:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
wait = WebDriverWait(driver, 15)
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, ".dojoxExpandoIcon.dojoxExpandoIconLeft.qa-button-toc")))
button = driver.find_element_by_css_selector(".dojoxExpandoIcon.dojoxExpandoIconLeft.qa-button-toc").click()

如果類的數量不穩定,則刪除正在變化的類,只保留穩定的類,例如:

.dojoxExpandoIconLeft.qa-button-toc

在這里,我剛剛刪除了其中一個課程。

在此處閱讀有關等待的更多信息https://selenium-python.readthedocs.io/waits.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM