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

使用Python Selenium操作DrugBank按钮无响应问题求助

问题排查:DrugBank药物交互检查页面按钮无反应

以下是用于自动检查药物交互的Python函数代码,但执行时输入药物后点击按钮无反应,自动化窗口手动点击按钮也无效,仅手动正常访问网站时操作正常:

def button_event(self):
    drug1 = self.entry1.get()
    drug2 = self.entry2.get()

    chrome_driver_path = "Chrome driver path "

    # Set Chrome options to run in headless mode
    chrome_options = Options()

    # Create a new Chrome browser instance with the headless option
    browser = webdriver.Chrome(executable_path=chrome_driver_path, options=chrome_options)

    # Load the web page
    browser.get('https://go.drugbank.com/drug-interaction-checker')

    # Find the form element by ID
    form = browser.find_element(By.CSS_SELECTOR,'form.name-search-form')

    # Find the input fields and fill them out
    name_input = form.find_element(By.CSS_SELECTOR,'input.select2-search__field')
    name_input.send_keys(drug1)
    time.sleep(2)
    name_input.send_keys(Keys.RETURN)

    name_input.send_keys(drug2)
    time.sleep(2)
    name_input.send_keys(Keys.RETURN)
    time.sleep(2)
    button = form.find_element(By.ID,"search")
    time.sleep(4)
    if button.is_enabled():
        button.click()
        print("button is enabled")
    else :
        description = "Unfound medics in database"
        self.text1.delete("1.0","end")
        self.text1.insert("0.0", description)
        return
    wait = WebDriverWait(browser, 20)
    new_page_loaded = wait.until(EC.url_contains('drug-interaction-checker#results'))
    time.sleep(2)

    try:
        # Find the element 
        browser.find_element(By.CSS_SELECTOR,"h2.no-results")
        description = "No interaction found"
        self.text1.delete("1.0","end")
        self.text1.insert("0.0", description)
        return
    except NoSuchElementException:
        print("results are there")

    # Find the interactions div and extract the description text
    interactions_div = browser.find_element(By.CSS_SELECTOR,'div.interactions-col.description')
    description = interactions_div.find_element(By.TAG_NAME,'p').text
    self.text1.delete("1.0","end")
    self.text1.insert("0.0", description)

可能的原因及解决方法

1. 无头浏览器被网站检测

很多网站会识别无头模式的Chrome并限制功能,导致按钮点击无效。

  • 临时排查:注释掉无头模式相关配置,直接启动可视化Chrome测试是否正常。
  • 修复方案:如果是无头模式的问题,添加模拟正常浏览器的参数:
    chrome_options.add_argument("--headless=new")  # 使用新版无头模式
    chrome_options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36")
    chrome_options.add_argument("--window-size=1920,1080")
    chrome_options.add_argument("--disable-blink-features=AutomationControlled")  # 禁用自动化检测特征
    

2. 药物选择未正确完成

直接按回车可能没有选中下拉列表中的有效药物,导致网站未识别到合法输入,按钮点击无响应。

  • 修复方案:输入药物后等待下拉选项出现,主动点击选中选项,而非直接回车:
    # 输入第一个药物并选择下拉选项
    name_input.send_keys(drug1)
    wait = WebDriverWait(browser, 10)
    # 等待高亮的选项出现并点击
    drug_option = wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, ".select2-results__option--highlighted")))
    drug_option.click()
    
    # 重复上述步骤处理第二个药物
    name_input = wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR,'input.select2-search__field')))
    name_input.send_keys(drug2)
    drug_option2 = wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, ".select2-results__option--highlighted")))
    drug_option2.click()
    

3. 依赖固定sleep导致的时序问题

固定time.sleep()无法适配页面动态加载的速度,可能导致按钮还未处于真正可点击状态就执行点击操作。

  • 修复方案:用显式等待代替固定sleep,等待按钮可点击后再执行点击:
    # 替换原有的按钮查找和点击逻辑
    button = wait.until(EC.element_to_be_clickable((By.ID, "search")))
    button.click()
    

4. Chrome驱动与浏览器版本不兼容

ChromeDriver版本和本地Chrome浏览器版本不匹配会导致交互异常。

  • 修复方案:查看Chrome浏览器版本(设置→关于Chrome),下载对应版本的ChromeDriver,替换代码中的chrome_driver_path路径。

5. 页面元素定位偏差

虽然找到了按钮元素,但可能不是实际绑定点击事件的元素,或者表单存在嵌套层级问题。

  • 修复方案:检查按钮的实际可点击区域,尝试用ActionChains模拟点击:
    from selenium.webdriver.common.action_chains import ActionChains
    
    action = ActionChains(browser)
    action.move_to_element(button).click().perform()
    

内容的提问来源于stack exchange,提问作者AMINE BENALI

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 21:15:45