簡體   English   中英

如何通過Python和Selenium從下拉菜單中單擊元素

[英]How to click on an element from the Dropdown menu through Python and Selenium

我試圖單擊下拉菜單,但是沒有運氣。 菜單由javascript激活。 我試圖單擊父div內的鏈接,但是這里沒有發生任何變化:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.webdriver.chrome.options import Options

options = webdriver.ChromeOptions()
options.add_argument("--start-maximized")
driver = webdriver.Chrome(chrome_options=options)
driver.get("https://www.energisa.com.br/Paginas/login.aspx")
select_element = Select(driver.find_element_by_id('ddlEstado'))
select_element.select_by_value('MG')
# select by visible text
select_element.select_by_visible_text('MG')

根據您的問題,網站https://www.energisa.com.br/Paginas/login.aspx下拉菜單未包含在Select標記中,因此Select類在這里不起作用。

一旦訪問了URL ,就需要誘使WebDriverWait使所需的元素可單擊,並且可以使用以下解決方案:

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

driver = webdriver.Chrome()
driver.get("https://www.energisa.com.br/Paginas/login.aspx")
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//li[@class='estado']/div[@class='select2-container' and @id='s2id_ddlEstado']"))).click()
driver.find_element_by_xpath("//ul[@class='select2-results' and @id='select2-results-1']//li/div[normalize-space()='MG']").click()

您嘗試單擊的下拉列表實際上不是SELECT元素,因此您不能使用Select類。 您嘗試單擊的SELECT只是一個后備元素,但它是不可見的,因此您無法與其交互。

要使此工作有效,您需要單擊下拉元素以顯示選項,然后單擊所需的選項。

driver.find_element_by_css_selector("#s2id_ddlEstado > a").click()
driver.find_element_by_xpath("//ul[@id='select2-results-1']/li[.='MG']").click()

這是未經測試的代碼,因此您可能需要添加一個等待...

看起來像select_list的那個不是select_list,這種select_list的目的是,我們可以寫到text_field來從巨大的列表中拾取元素,如果您鍵入“ M”,則所有具有M將顯示。

編寫以下代碼,它將起作用。

WebDriverWait(driver,10).until(EC.invisibility_of_element_located((By.ID,"loadingContent")))
driver.find_element_by_id("s2id_ddlEstado").click
driver.find_element_by_xpath("//ul[@id='select2-results-1']//div[text()='MG']").click

暫無
暫無

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

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