如何解决为什么我无法使用sendkey在文本框中输入文本?
这是我到目前为止的代码
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”。
这是我在运行上面列出的代码时收到的错误消息:'消息:没有这样的元素:无法找到元素:{“ method”:“ css选择器”,“ selector”:“。qs-ui- ipt qs-pageutil-input“}'
我看到大多数教程使用“ find_element_by_id”来运行此过程,但是网页上的元素没有与之关联的ID。我不确定是否需要ID来执行此过程,但我认为我也可以共享。我还尝试通过XPath和CSS选择器来找到该元素,但这没有用。
非常感谢所有帮助!
谢谢, 罗斯
解决方法
您不能将find_element_by_class_name用作复合类名称。 See this answer。
,使用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,"input.qs-ui-ipt.qs-pageutil-input"))).clear()
WebDriverWait(driver,"input.qs-ui-ipt.qs-pageutil-input"))).send_keys("2")
浏览器快照:
, U可以使用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,'#ms-agreement > input'))).click()
#tries to clear text box at bottom right hand side of page
txtbox = WebDriverWait(browser,'#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)
希望这会有所帮助!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。