簡體   English   中英

找到 select 並單擊 Python Selenium 上的選項

[英]Find select and click option on Python Selenium

作為自動化任務軟件的一部分,我使用 Selenium 和 python 來使用 web。 經過一些進步后,我遇到了一個根本無法解決的問題。

我想找到一個帶有 Selenium 的標簽,以便能夠 select 這些選項之一。 它有一個 ID 和一個 class。 所以我寫:

select = driver.find_element(By.CLASS_NAME, "myselectclassname")
select.select_by_value('1')
select.click()

不幸的是,我每次都會收到此錯誤:

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method": "css selector", "selector":".myselectclassname"}
  (Session info: MicrosoftEdge=IP)

我在谷歌上搜索了所有幫助,他們都告訴我在找到元素之前要延遲(因為在生成 web 頁面之前搜索會太快),所以我再次嘗試使用 ID 的另一個代碼:

select= WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "theIDofmyselect"))

但是延遲了10s后,由於時間原因返回了一個錯誤。

有人能幫我嗎? 我有 python 3.10 和 selenium 4.3.0


更新

代碼非常響亮,所以這里是一個摘要部分:

<table cellpadding="0" cellspacing="0">
    <tbody>
        <tr>
            <td>
                <span class="blockedElement">
                    <select id="myselectid" class="myselectclassname" style="margin-top:3px;">
                        <option title="text_1" value="0" selected="selected">
                            t   e  xt1   
                        </option>
                        <option title="text_2" value="1">
                            t ex  t2
                        </option>

對於 select ,您需要為element_to_be_clickable()誘導WebDriverWait而不是 present_of_element_located ()所需的選項,並且您可以使用以下任一定位器策略

  • 使用CSS_SELECTOR

     Select(WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "select.myselectclassname#myselectid")))).select_by_value('1')
  • 使用XPATH

     Select(WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//select[@class='myselectclassname' and @id='myselectid']")))).select_by_value('1')
  • 注意:您必須添加以下導入:

     from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC

暫無
暫無

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

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