簡體   English   中英

Python Selenium select 如何從單個 select 下拉菜單中的一個項目,當有多個?

[英]With Python Selenium, how to select an item from a single select drop-down menu, when there are multiple?

我在 web 頁面上有一個[添加字段]按鈕,按下時,它將顯示一個 select 列表(下拉菜單)。

這個單select下拉列表的xpath是: '//*[@id="adv_options[3][]'

第二個數組項為空 l 就像'[]'

我有代碼將 select 作為第一個“添加字段”中的正確項目,但如果我再次單擊“添加字段”,它會顯示另一個 select 下拉菜單(具有相同的選項),以及第二個 xpath是一樣的: '//*[@id="adv_options[3][]'

所以現在,如果我嘗試使用 xpath 從該菜單中訪問 select,它將 select 第一個,而不是第二個。

該網站可能編碼不當,我 select 如何從第二個、第三個或第四個 select 下拉菜單選項中選擇正確的項目?


更新:

以下適用於 select 第一個下拉列表中的第一項:

element = self.driver.find_element(By.XPATH, '//*starts-with(@id, 'adv_options[3][]')
select=Select(element)
select.select_by_value('1506')

現在有第二個具有相同 ID (adv_options[3][]) 的下拉列表,我無法通過 xpath 和 select 項從中找到它。


如果有人遇到過這個問題並找到了可行的代碼,請分享。

我希望您可以使用另一個 XPath 來唯一確定兩個下拉框。

XPath 是在頁面上查找元素的路徑。 目前它只是找到任何具有我猜兩個下拉框都有的 id adv_options的節點。 如果你想讓別人找到另一個 XPath 來唯一確定第二個盒子,你就必須提供一些包含這兩個盒子的 HTML。

但是,在 selenium 中,您可以執行以下操作:

drop-down = driver.find_elements_by_xpath('//*[@id="adv_options[3][]')
#Returns an array of elements with this xpath
#E.g 
drop_down[0] #will be the first element with that path presumably the drop down box.
drop_down[1] #should be the second element with that path

暫無
暫無

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

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