Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 下拉列表和Selenium与Python_Javascript_Python_Ajax_Selenium_Drop Down Menu - Fatal编程技术网

Javascript 下拉列表和Selenium与Python

Javascript 下拉列表和Selenium与Python,javascript,python,ajax,selenium,drop-down-menu,Javascript,Python,Ajax,Selenium,Drop Down Menu,我正试图开发代码,在一个能源比较网站上进行数据清理。问题是,在这个网站中,它包含了一些下拉列表,可能是AJAX,但我不知道,所以即使我在提交信息时键入了正确的名称,该页面也会给我两个错误 -插入你的房子表面,它不应该告诉我,因为当我按下“我知道我的消费”按钮时,它是一种逃避的形式[正在进行] -您必须插入您的城市,即使我键入了全名,但我不知道单击selenium[已解决]下拉列表中的某个项目有多热 代码如下: from bs4 import BeautifulSoup as soup from

我正试图开发代码,在一个能源比较网站上进行数据清理。问题是,在这个网站中,它包含了一些下拉列表,可能是AJAX,但我不知道,所以即使我在提交信息时键入了正确的名称,该页面也会给我两个错误

-插入你的房子表面,它不应该告诉我,因为当我按下“我知道我的消费”按钮时,它是一种逃避的形式[正在进行]

-您必须插入您的城市,即使我键入了全名,但我不知道单击selenium[已解决]下拉列表中的某个项目有多热

代码如下:

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

html在我的代码中的网站中。我认为我无法选择下拉列表,因为它不是HTML中的元素。我试图按照您链接中的说明进行操作,但出现了以下错误“WebElement”对象不是iterableville=browser。按id“city”查找ville中的选项:if option.text==“Paris 75001”:option。单击前面的“选择”webdriver break ville.send_keysParis 75001 submit=浏览器的版本。通过_id“compare-offer”submit查找元素。单击非常感谢提供列表,但如何选择一个元素?我试图创建一个id为ui-id-1135的WebElement,然后单击它,但它告诉我没有这样的元素:找不到元素我已经用示例代码对我的答案添加了一些解释,请查看没有这样的元素:找不到元素:{方法:类名,选择器:ui-id-1135}会话信息:chrome=67.0.3396.79是的,这是因为id是动态的,我添加了一个xPath,应该可以工作,请尝试。我找到了添加此浏览器的解决方案。执行\u scriptarguments[0]。选中=true;,点击按钮后,谢谢你