[英]How can I click on multiple drop down list on a page with Python and Selenium?
[英]Drop down list and Selenium with Python
我正在尝试开发代码以在能源比较网站上进行数据刮取。 问题在于该网站中包含一些下拉列表(也许是AJAX,但我不知道),因此即使我在提交信息时键入正确的名称,该页面也会给我两个错误。
-插入您的房屋表面(它不应该告诉我,因为当我按“我知道我的消费量”时,它已经消失了) [未完成]
-您必须插入您的城市(即使我输入了全名,也无法从硒中单击下拉列表中的某个项目)[解决]
这是代码:
from bs4 import BeautifulSoup as soup
from openpyxl import load_workbook
from openpyxl.styles import PatternFill, Font
from selenium import webdriver
from selenium.webdriver.common.by import By
import datetime
import os
#saving url
browser = webdriver.Chrome(executable_path=r"C:\Program Files(x86)\Google\Chrome\Application\chromedriver.exe")
my_url = 'https://comparateur.selectra.info'
#opening my connection and downloading the page
browser.get(my_url)
button = browser.find_elements_by_class_name('custom-control-indicator')[-1]
browser.execute_script("arguments[0].click();", button)
start = browser.find_element(By.XPATH, '//*[@id=\"no-cookie\"]/form/button')
start.click()
comp = browser.find_element(By.XPATH, '//*[@id=\"form-comparaison\"]/fieldset[1]/div[1]/div/label[1]')
comp.click()
cons = browser.find_element_by_class_name('know_consumption_yes')
browser.execute_script("arguments[0].click();", cons)
browser.execute_script("arguments[0].click();", cons)
kw = browser.find_element_by_id('annual-elec')
kw.send_keys("3200")
ville = browser.find_element_by_id('city')
ville.send_keys("Paris (75001)")
submit = browser.find_element_by_id('compare-offer')
submit.click()
提前致谢
我不确定您的选择器是否正确,因为没有html,
尝试这些方法,它们应该主要解决问题,
driver.get('url')
select = Select(driver.find_element_by_id('your_select_element_id here'))
# select by visible text
select.select_by_visible_text('Your option text here')
# select by value
select.select_by_value('option_value here')
另外,请参考此问题的答案
列表在这里:
只是看看你需要什么。
首先,您必须在输入字段中输入名称(更好的全名),然后稍等一会(2-3秒),列表就会出现,然后您可以从丢失的下拉列表中找到您的元素,然后单击它。
例如:
ville = browser.find_element_by_id('city')
ville.send_keys("Paris (75001)")
driver.implicitly_wait(2) # waits 2 sec
element = driver.find_element_by_xpath("//*[contains(text(), 'Paris (75001)')]") # locate the dropdown elem
element.click() # click on it
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.