首页 > 解决方案 > 单击一个按钮以在 python selenium 中显示一个文本框

问题描述

我正在尝试单击一个取消隐藏另一个文本框的按钮。单击按钮将脚本从

<span id="incident.u_brand_edit" style="display: none;">

<span id="incident.u_brand_edit" style>

以下是按钮 HTML

<button class="btn btn-default btn-ref" type="button" aria-labelledby="incident.u_brand_title_text" 
data-target="#incident\.u_brand" title="" tabindex="0" id="incident.u_brand_unlock" 
data-type="glide_list_unlock" data-ref="incident.u_brand" data-auto-close="false" 
data-placement="auto" style="margin-right: 5px;" list-read-only="false" 
data-original-title="Unlock Brand"><span class="icon icon-locked" aria-hidden="true"></span></button>

我正在尝试使用以下代码来实现这一点

driver.find_element_by_id("incident.u_brand_unlock").click()

也试过这个

driver.find_element_by_id("incident.u_brand_unlock").send_keys("\n")

上面的代码专注于按钮,但它没有点击,文本框也没有隐藏以执行进一步的操作。

标签: pythonseleniumxpathcss-selectorswebdriverwait

解决方案


要单击您需要诱导WebDriverWait的元素element_to_be_clickable(),您可以使用以下任一Locator Strategies

  • 使用CSS_SELECTOR

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button.btn.btn-default.btn-ref[id$='u_brand_unlock'][data-original-title='Unlock Brand']>span"))).click()
    
  • 使用XPATH

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@class='btn btn-default btn-ref' and contains(@id, 'u_brand_unlock')][@data-original-title='Unlock Brand']/span"))).click()
    
  • 注意:您必须添加以下导入:

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

推荐阅读