【问题标题】:Unable to click on a button [closed]无法单击按钮[关闭]
【发布时间】:2018-05-11 14:05:14
【问题描述】:
<button type="button" class="btn rd-button btn-ng-bs-animated clearfix" ng-disabled="false" ng-click="submitApplication(); $event.preventDefault();" is-submitting="isAppSubmitting" options="optionsSubmitBtn">
    <div class="icons pull-left">
        <span class="show"></span>
        <span class="show"></span>
        <span class="show"></span>
    </div>
    <div class="text ">submit your application</div>
</button>

我想从以下网址单击带有文本的按钮提交您的申请

https://www.randstadusa.com/jobs/search/apply/4/620370/

【问题讨论】:

  • 请参阅:How do I do X? SO 的期望是,提出问题的用户不仅会进行研究以回答他们自己的问题,还会分享研究、代码尝试和结果。这表明您已经花时间尝试帮助自己,它使我们免于重复明显的答案,最重要的是它可以帮助您获得更具体和相关的答案!另见:How to Ask

标签: python selenium selenium-webdriver xpath css-selectors


【解决方案1】:

根据您共享的 HTML,单击带有文本的按钮 提交您的应用程序,您可以使用以下任一定位器策略

  • css_selector

    driver.find_element_by_css_selector("button.btn.rd-button.btn-ng-bs-animated.clearfix[options='optionsSubmitBtn'] div.text").click()
    
  • xpath

    driver.find_element_by_xpath("//button[@class='btn rd-button btn-ng-bs-animated clearfix' and @options='optionsSubmitBtn']//div[@class='text']").click()
    

【讨论】:

  • 根据 html,您的答案是正确的,但根据 url,我认为它不起作用
  • 这个选择器不够具体。有两个元素与该 XPath 对应,但只有第二个是可点击的
  • 您可以进一步简化它。删除课程并离开://button[@options='optionsSubmitBtn']。很确定如果 OP 正在使用 Selenium,那应该就足够了,所有 OP 需要添加.click()
  • 请注意,页面上有两个元素具有 btn rd-button btn-ng-bs-animated clearfix 类。第一个文本为send your resume,第二个文本为submit your application。我们需要第二个,所以我们需要多指定一点。
  • 想要第二个因此你需要@options='optionsSubmitBtn'
【解决方案2】:
from selenium.webdriver.common.by import By
driver.find_element(By.XPATH, "//div[@ng-hide = 'openApply']//button[@class = 'btn rd-button   btn-ng-bs-animated clearfix']//div[@class = 'text ']").click()

在开头添加了额外的约束,因为有两个按钮具有相同的类但一个是可点击的

编辑: 添加了By 方法。我喜欢它,因为您可以将 find_elements 与任何类型的属性/选择器一起使用,而不是记住每个单独的方法。

【讨论】:

  • driver.get 没有可点击的属性
  • driver.get("//div[@ng-hide = 'openApply']") ?
  • @DebanjanB 已修复。
  • 不,错误仍然很明显 ;)
  • 我们去哈哈。我现在还早!
【解决方案3】:

按钮被隐藏

driver.find_element_by_css_selector("#ctl07_ctl03_ApplyFormDiv > application > div > div > div > div > div:nth-child(7) > div > div > div > div > div:nth-child(2) > button > div.text").click()

此代码有效

【讨论】:

  • 使用 Chrome 为您生成的 CSS 选择器或 XPath 是一个非常糟糕的主意。它们是直接路径,如果页面上的某些内容发生变化,它就会崩溃。
  • ctl07_ctl03ctl07_ctl03_ApplyFormDiv 一样似乎是动态的。你需要格外小心,
猜你喜欢
  • 1970-01-01
  • 2014-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多