如何使用 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.
我希望 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.