无法使用Selenium将所需的密钥发送到下拉列表

时间:2019-07-05 02:54:57

标签: python selenium

我正在尝试抓取一个网站,在该网站上我需要选择下拉列表给出的距离,但是在发送密钥时,它没有采用程序发送的值,而是在下拉列表中采用了一些随机值。请为此提供帮助

我尝试使用XPath并使用send_keys发送值,但所有尝试都是徒劳的。没有任何帮助。

url = 'https://www.solargard.com/find-a-dealer/'
x = '98357'
driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get(url)
loc = driver.find_element_by_xpath('//*[@id="zip"]')
loc.send_keys(x)
driver.find_element_by_xpath("//button[@data-id = 
'distance_metric']").send_keys('150 mi')
driver.find_element_by_xpath("//label[@for = 'select_all']").click()
time.sleep(5)
sub = driver.find_element_by_xpath("//button[@type = 'submit' and @class 
= 'btn btn-primary upper']")
sub.click()

我想选择150英里范围内的最大值。如果有人可以帮助我,那真是太好了,因为我在这个领域还很新。

1 个答案:

答案 0 :(得分:1)

这是您可以使用的xpath。

(//li[@class='divider']/preceding-sibling::li)[last()]

下面是您可以使用的代码。

url = 'https://www.solargard.com/find-a-dealer/'
driver.get(url)

loc = driver.find_element_by_xpath('//*[@id="zip"]')
loc.send_keys('98357')
driver.find_element_by_css_selector("[data-id='distance_metric']").click()
maxMilesEle = WebDriverWait(driver,30).until(EC.presence_of_element_located((By.XPATH,"(//li[@class='divider']/preceding-sibling::li)[last()]")))
maxMilesEle.location_once_scrolled_into_view
maxMilesEle.click()
driver.find_element_by_xpath("//label[@for = 'select_all']").click()
# time.sleep(5)
sub = driver.find_element_by_xpath("//button[@type = 'submit' and @class= 'btn btn-primary upper']")
sub.click()

请确保导入以下内容。

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