I want they select value for the dropdown
from the Ville
option
and then click on search
option for each value but the problem is that they do not select value from ville
these is pag link https://www.barreaunantes.fr/annuaire/
from selenium import webdriver
import time
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support.select import Select
PATH="C:\Program Files (x86)\chromedriver.exe"
url='https://www.barreaunantes.fr/annuaire/'
driver =webdriver.Chrome(PATH)
wait = WebDriverWait(driver, 20)
driver.get(url)
select=driver.find_element(By.CSS_SELECTOR,"select[id='ville-select']" )
options = select.find_elements(By.TAG_NAME,"option")
for option in options[1:]:
t=option.get_attribute("value")
d=driver.find_element(By.CSS_SELECTOR,"input[type='submit']")
d=d.click()
CodePudding user response:
Your element locator strategy selection isn't in proper way. The following code is working as expectation. You can increase or decrease the range of value selection yours own way.
import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import Select
options = Options()
options.add_argument("--no-sandbox")
options.add_argument("start-maximized")
options.add_experimental_option("detach", True)
webdriver_service = Service("./chromedriver") #Your chromedriver path
driver = webdriver.Chrome(service=webdriver_service,options=options)
url = 'https://www.barreaunantes.fr/annuaire/'
driver.get(url)
for x in range(4):
select = Select(WebDriverWait(driver, 30).until(EC.element_to_be_clickable((By.CSS_SELECTOR, '#ville-select'))))
select.select_by_index(x)
time.sleep(2)
click_on_search_button = WebDriverWait(driver, 30).until(EC.presence_of_element_located((By.XPATH, '(//*[@value="Rechercher"])[1]')))
driver.execute_script("arguments[0].click();", click_on_search_button)