如何根据 url 通过 Selenium 将文本发送到地理位置搜索框
How to send text into the geolocation searchbox as per the url through Selenium
HTML Code
我正在尝试将输入(邮政编码)输入商店定位器。
zipcode = input("What zip code would you like to search? ")
driver = webdriver.Firefox()
driver.get('http://www2.dollargeneral.com/About-Us/pages/storelocator.aspx')
driver.maximize_window()
print "page accesses"
inputElement = driver.find_element_by_xpath("//*[@id='address']")
inputElement.send_key(zipcode)
inputElement.send_keys(Keys.ENTER)
我还在 WebDriver 中尝试了多种不同的 select_by
方法。谁能把我推向正确的方向?我过去经常使用硒,难道这在这个特定的网站上是不可能的吗?感谢您的帮助!
smit9234 是正确的——您需要切换帧。这有效:
from selenium import webdriver
zipcode = "91307" #input("What zip code would you like to search? ")
driver = webdriver.Chrome()
driver.get('http://www2.dollargeneral.com/About-Us/pages/storelocator.aspx')
driver.switch_to_frame("StoreLocator")
el = driver.find_element_by_id("address")
el.send_keys(zipcode)
要在商店定位器搜索框中发送字符序列(邮政编码),您需要:
- 首先诱导 WebDriverWait 以获得所需的 框架并切换到它
- 然后再次诱导 WebDriverWait 以使所需的 元素可点击 并调用
click()
最后再次诱导 WebDriverWait 使所需的 元素可点击 并调用 send_keys()
代码块:
from selenium import webdriver
from selenium.webdriver.firefox.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
options = Options()
options.binary_location = r'C:\Program Files\Firefox Nightly\firefox.exe'
driver = webdriver.Firefox(firefox_options=options, executable_path=r'C:\WebDrivers\GeckoDriver\geckodriver-v0.20.1-win64\geckodriver.exe')
driver.get("http://www2.dollargeneral.com/About-Us/pages/storelocator.aspx")
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.ID,"StoreLocator")))
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a.closeBtn>img[src='images/dollargeneral_new_bubble_close.png']"))).click()
zipcode = input("What zip code would you like to search? ")
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input.form-control#address"))).send_keys(zipcode)
浏览器快照:
HTML Code
我正在尝试将输入(邮政编码)输入商店定位器。
zipcode = input("What zip code would you like to search? ")
driver = webdriver.Firefox()
driver.get('http://www2.dollargeneral.com/About-Us/pages/storelocator.aspx')
driver.maximize_window()
print "page accesses"
inputElement = driver.find_element_by_xpath("//*[@id='address']")
inputElement.send_key(zipcode)
inputElement.send_keys(Keys.ENTER)
我还在 WebDriver 中尝试了多种不同的 select_by
方法。谁能把我推向正确的方向?我过去经常使用硒,难道这在这个特定的网站上是不可能的吗?感谢您的帮助!
smit9234 是正确的——您需要切换帧。这有效:
from selenium import webdriver
zipcode = "91307" #input("What zip code would you like to search? ")
driver = webdriver.Chrome()
driver.get('http://www2.dollargeneral.com/About-Us/pages/storelocator.aspx')
driver.switch_to_frame("StoreLocator")
el = driver.find_element_by_id("address")
el.send_keys(zipcode)
要在商店定位器搜索框中发送字符序列(邮政编码),您需要:
- 首先诱导 WebDriverWait 以获得所需的 框架并切换到它
- 然后再次诱导 WebDriverWait 以使所需的 元素可点击 并调用
click()
最后再次诱导 WebDriverWait 使所需的 元素可点击 并调用
send_keys()
代码块:
from selenium import webdriver from selenium.webdriver.firefox.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 options = Options() options.binary_location = r'C:\Program Files\Firefox Nightly\firefox.exe' driver = webdriver.Firefox(firefox_options=options, executable_path=r'C:\WebDrivers\GeckoDriver\geckodriver-v0.20.1-win64\geckodriver.exe') driver.get("http://www2.dollargeneral.com/About-Us/pages/storelocator.aspx") WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.ID,"StoreLocator"))) WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a.closeBtn>img[src='images/dollargeneral_new_bubble_close.png']"))).click() zipcode = input("What zip code would you like to search? ") WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input.form-control#address"))).send_keys(zipcode)
浏览器快照: