如何使用 Selenium 和 Python 在 HTML 中存在特定元素时模拟按下箭头键

How to simulate pressing the arrow down key when a specific element is present in the HTML using Selenium and Python

我希望 python 在浏览器或搜索栏中某处出现特定单词(例如 google 时)单击键盘上的某个键(例如向下箭头键)。它是 possible with selenium 还是 os 模块。有什么建议吗?

您可以使用 xpath 搜索元素以查找您正在搜索的文本,例如$x('//*[.="Text"]') 然后使用 sendKey() 按键

使用在满足特定条件时点击向下箭头键,作为示例我已经通过以下步骤进行了演示:

  • 打开urlhttps://www.google.com/
  • 等待 Google 主页搜索框 元素,即 By.NAME, "q" 可点击。
  • 发送字符序列selenium.
  • 等待自动建议可见。
  • 向下箭头 键上单击两次

    • 代码块:

      from selenium import webdriver
      from selenium.webdriver.common.by import By
      from selenium.webdriver.support.ui import WebDriverWait
      from selenium.webdriver.support import expected_conditions as EC
      from selenium.webdriver.common.keys import Keys
      
      options = webdriver.ChromeOptions() 
      options.add_argument("start-maximized")
      options.add_experimental_option("excludeSwitches", ["enable-automation"])
      options.add_experimental_option('useAutomationExtension', False)
      driver = webdriver.Chrome(options=options, executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe')
      driver.get('https://www.google.com/')
      WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.NAME, "q"))).send_keys("Selenium")
      WebDriverWait(driver, 10).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "ul[role='listbox'] li")))
      driver.find_element_by_css_selector('body').send_keys(Keys.DOWN)
      driver.find_element_by_css_selector('body').send_keys(Keys.DOWN)
      
    • 浏览器快照:

PS: Implementing the above logic you can also click on Arrow Up, Arrow Left and Arrow Right keys.