首页 > 解决方案 > Selenium(Python) 跳过键盘操作

问题描述

所以我大约两周前开始学习 selenium(python),现在我正在制作自己的简单项目。它从用户那里获取输入(网站名称或一些随机主题),然后将用户的输入输入到搜索栏中,然后单击第一个给定链接并抓取网站的所有文本(段落)和将其保存在一个txt文件中。我不得不提到我之前在 Windows 笔记本电脑上运行过该脚本,现在我使用的是 MacBook Pro。在 Windows 机器上,这个问题没有发生,但在 MacBook 上,硒似乎跳过了 elem.send_keys(Keys.RETURN) 并总是点击 gmail 链接,所以基本上它不会等待搜索发生。老实说,我不知道如何解决这个问题,我尝试在网上搜索类似的问题,但没有找到任何东西。


from selenium import webdriver
from selenium.webdriver.common.keys import Keys

subjectName = str(input("Enter the name of the subject: "))

driver = webdriver.Safari()
driver.get("https://www.google.com")

elem = driver.find_element_by_name("q")
elem.send_keys(subjectName)
elem.send_keys(Keys.RETURN)

results = driver.find_elements_by_tag_name(
"a")  # finds webresults
results[0].click()  # clicks the first one

标签: pythonseleniumautomation

解决方案


添加显式等待:

elem = driver.find_element_by_name("q")
element = WebDriverWait(driver, 10).until(EC.visibility_of(("elem")))
elem.send_keys(subjectName)
elem.send_keys(Keys.RETURN)

推荐阅读