为什么我不能使用 sendkeys 在文本框中输入文本?
Why am I not able to use sendkeys to enter text into textbox?
这是我目前的代码
from selenium import webdriver
import os
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
chrome_driver = os.path.abspath('C:/Users/ross/Desktop/chromedriver.exe')
browser = webdriver.Chrome(chrome_driver)
browser.get('https://finra-markets.morningstar.com/BondCenter/BondTradeActivitySearchResult.jsp?ticker=C679131&startdate=10%2F03%2F2019&enddate=10%2F03%2F2020')
#clicks agreement to morningstar's terms of service
WebDriverWait(browser, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, '#ms-agreement > input'))).click()
#tries to clear text box at bottom right hand side of page
browser.find_element_by_class_name('qs-ui-ipt qs-pageutil-input').clear()
#tries to enter '2' in text box
browser.find_element_by_class_name('qs-ui-ipt qs-pageutil-input').send_keys(2)
我正在尝试在图表右下角的文本框中输入数字“2”。
这是我在 运行 上面列出的代码时收到的错误消息:'Message: no such element: Unable to locate element: {"method":"css selector","selector":".qs-ui-ipt qs-pageutil-input"}'
我看到大多数教程使用 'find_element_by_id' 到 运行 这个过程,但网页上的元素没有与之关联的 ID。我不确定我是否需要 ID 来执行此过程,但我想我不妨分享一下。我还尝试通过 XPath 和 CSS 选择器查找元素,但没有成功。
非常感谢任何帮助!
谢谢,
罗斯
你可以使用WebDriverWait
& CSS Selector
来解决这个问题。这是完整的代码:
from selenium import webdriver
import os
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
chrome_driver = os.path.abspath('C:/Users/ross/Desktop/chromedriver.exe')
browser = webdriver.Chrome(chrome_driver)
browser.get('https://finra-markets.morningstar.com/BondCenter/BondTradeActivitySearchResult.jsp?ticker=C679131&startdate=10%2F03%2F2019&enddate=10%2F03%2F2020')
#clicks agreement to morningstar's terms of service
WebDriverWait(browser, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, '#ms-agreement > input'))).click()
#tries to clear text box at bottom right hand side of page
txtbox = WebDriverWait(browser, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, '#ms-glossary > div > table > tfoot > tr > td > div > input'))) #Usage of CSS_SELECTOR instead of CLASS_NAME; usage of WebDriverWait
txtbox.click()
txtbox.clear()
#tries to enter '2' in text box
txtbox.send_keys(2)
希望对您有所帮助!
您不能将 find_element_by_class_name 用于复合 class 名称。 .
使用 WebDriverWait
() 并等待 element_to_be_clickable
() 和后面的 css 选择器 .
driver.get("https://finra-markets.morningstar.com/BondCenter/BondTradeActivitySearchResult.jsp?ticker=C679131&startdate=10%2F03%2F2019&enddate=10%2F03%2F2020")
WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"input.button_blue.agree"))).click()
WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"input.qs-ui-ipt.qs-pageutil-input"))).clear()
WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"input.qs-ui-ipt.qs-pageutil-input"))).send_keys("2")
浏览器快照:
这是我目前的代码
from selenium import webdriver
import os
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
chrome_driver = os.path.abspath('C:/Users/ross/Desktop/chromedriver.exe')
browser = webdriver.Chrome(chrome_driver)
browser.get('https://finra-markets.morningstar.com/BondCenter/BondTradeActivitySearchResult.jsp?ticker=C679131&startdate=10%2F03%2F2019&enddate=10%2F03%2F2020')
#clicks agreement to morningstar's terms of service
WebDriverWait(browser, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, '#ms-agreement > input'))).click()
#tries to clear text box at bottom right hand side of page
browser.find_element_by_class_name('qs-ui-ipt qs-pageutil-input').clear()
#tries to enter '2' in text box
browser.find_element_by_class_name('qs-ui-ipt qs-pageutil-input').send_keys(2)
我正在尝试在图表右下角的文本框中输入数字“2”。
这是我在 运行 上面列出的代码时收到的错误消息:'Message: no such element: Unable to locate element: {"method":"css selector","selector":".qs-ui-ipt qs-pageutil-input"}'
我看到大多数教程使用 'find_element_by_id' 到 运行 这个过程,但网页上的元素没有与之关联的 ID。我不确定我是否需要 ID 来执行此过程,但我想我不妨分享一下。我还尝试通过 XPath 和 CSS 选择器查找元素,但没有成功。
非常感谢任何帮助!
谢谢, 罗斯
你可以使用WebDriverWait
& CSS Selector
来解决这个问题。这是完整的代码:
from selenium import webdriver
import os
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
chrome_driver = os.path.abspath('C:/Users/ross/Desktop/chromedriver.exe')
browser = webdriver.Chrome(chrome_driver)
browser.get('https://finra-markets.morningstar.com/BondCenter/BondTradeActivitySearchResult.jsp?ticker=C679131&startdate=10%2F03%2F2019&enddate=10%2F03%2F2020')
#clicks agreement to morningstar's terms of service
WebDriverWait(browser, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, '#ms-agreement > input'))).click()
#tries to clear text box at bottom right hand side of page
txtbox = WebDriverWait(browser, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, '#ms-glossary > div > table > tfoot > tr > td > div > input'))) #Usage of CSS_SELECTOR instead of CLASS_NAME; usage of WebDriverWait
txtbox.click()
txtbox.clear()
#tries to enter '2' in text box
txtbox.send_keys(2)
希望对您有所帮助!
您不能将 find_element_by_class_name 用于复合 class 名称。
使用 WebDriverWait
() 并等待 element_to_be_clickable
() 和后面的 css 选择器 .
driver.get("https://finra-markets.morningstar.com/BondCenter/BondTradeActivitySearchResult.jsp?ticker=C679131&startdate=10%2F03%2F2019&enddate=10%2F03%2F2020")
WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"input.button_blue.agree"))).click()
WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"input.qs-ui-ipt.qs-pageutil-input"))).clear()
WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"input.qs-ui-ipt.qs-pageutil-input"))).send_keys("2")
浏览器快照: