![](/img/trans.png)
[英]click on option in a select with selenium library in python
[英]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.