You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Selenium点击drugs.com的Check Interactions按钮

问题

在drugs.com查询两种药物(阿司匹林、Aleve)的相互作用时,已通过代码将药物名称填入搜索框,但多次尝试点击「Check Interactions」按钮以在新窗口查看结果均失败。

原实现代码

import requests 
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

# Launch the Chrome browser
driver = webdriver.Chrome()

# Navigate to the drugs.com drug interactions page
driver.get("https://www.drugs.com/drug_interactions.html")
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input#livesearch-interaction-basic"))).send_keys('aspirin' +Keys.RETURN)
search_box = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input#livesearch-interaction")))
search_box.clear()
search_box.send_keys('Aleve')
search_box.send_keys(Keys.RETURN)

问题分析与修正方案

原代码仅通过回车提交药物名称,未处理页面的自动补全选择逻辑,且缺少点击「Check Interactions」按钮及新窗口切换的步骤。以下是修正后的完整代码:

修正后代码

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

# 启动Chrome浏览器
driver = webdriver.Chrome()
driver.maximize_window()

# 打开药物相互作用查询页面
driver.get("https://www.drugs.com/drug_interactions.html")

# 添加第一种药物:阿司匹林
first_search = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.CSS_SELECTOR, "input#livesearch-interaction-basic"))
)
first_search.send_keys('aspirin')
# 等待自动补全选项出现并选择第一个结果
WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.CSS_SELECTOR, ".livesearch-row"))
).click()

# 添加第二种药物:Aleve
second_search = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.CSS_SELECTOR, "input#livesearch-interaction"))
)
second_search.send_keys('Aleve')
# 等待自动补全选项出现并选择第一个结果
WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.CSS_SELECTOR, ".livesearch-row"))
).click()

# 点击「Check Interactions」按钮
check_btn = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.CSS_SELECTOR, "#content > div:nth-child(4) > div > div.section-interaction-search > div > div > button"))
)
check_btn.click()

# 切换到新打开的结果窗口
WebDriverWait(driver, 10).until(EC.number_of_windows_to_be(2))
windows = driver.window_handles
driver.switch_to.window(windows[1])

# 后续可添加结果提取逻辑
# ...

# 关闭浏览器
# driver.quit()

关键修正点

  • 增加自动补全选项选择:避免直接回车导致药物未被系统正确识别
  • 准确定位「Check Interactions」按钮:通过CSS选择器精准定位按钮元素
  • 处理新窗口切换:等待新窗口打开后切换到该窗口进行后续操作

内容的提问来源于stack exchange,提问作者Abdelrhman Samir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 02:35:15