【问题标题】:How can I click on numeric buttons (onclick Event) using selenum in python?如何在 python 中使用 selenium 单击数字按钮(onclick 事件)?
【发布时间】:2018-06-07 13:51:02
【问题描述】:

我有一个这样的 HTML 代码:

<ul aria-hidden="false" aria-labelledby="resultsPerPage-button" id="resultsPerPage-menu" role="listbox" tabindex="0" class="ui-menu ui-corner-bottom ui-widget ui-widget-content" aria-activedescendant="ui-id-2" aria-disabled="false" style="width: 71px;">
    <li class="ui-menu-item">
        <div id="ui-id-1" tabindex="-1" role="option" class="ui-menu-item-wrapper">20</div>
   </li>
   <li class="ui-menu-item"><div id="ui-id-2" tabindex="-1" role="option" class="ui-menu-item-wrapper ui-state-active">50</div>
   </li>
   <li class="ui-menu-item"><div id="ui-id-3" tabindex="-1" role="option" class="ui-menu-item-wrapper">100</div>
   </li>
   <li class="ui-menu-item"><div id="ui-id-4" tabindex="-1" role="option" class="ui-menu-item-wrapper">200</div>
   </li>
</ul>

我想点击“200”。你能帮我吗?我在 python 2.7 中使用了 selenium

我试过这样做:

import time 

time.sleep(10) 
x=driver.find_element_by_link_text("200").click() 
x.click() 
time.sleep(8)

【问题讨论】:

  • 你能分享到目前为止你做了什么吗?
  • 尝试使用这样的东西:driver.find_element_by_link_text("200").click()
  • 您的建议将显示此错误:selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: 200
  • 能否分享给定html代码的GUI
  • 尝试在该行之前使用一些延迟。顺便说一句,你的代码在哪里?您应该在此处粘贴您的代码以获得更具体的答案。

标签: python-2.7 selenium web-scraping click buttonclick


【解决方案1】:

这里的问题是包含文本200 的元素不是“链接”,而只是在该站点上定义了一个可以用作可点击元素的li 标记。

documentation 没有直接指定,但“链接”仅表示a 标签

这个想法是相同的,但您必须以不同于将其视为链接的方式找到该元素。我认为使用 xpath 是这种方法的最佳方式:

x = driver.find_element_by_xpath("//div[./text()='200']")
x.click()

当然,这可以根据它包含的text 来查找元素,但是要找到您想要的特定节点,使用id 会更加容易和更好,因为它应该始终是唯一的:

x = driver.find_element_by_id('ui-id-4')

【讨论】:

  • 没错。但是,如果不使用 send_key,它就不起作用。我的 HTML 代码显示该按钮是一个下拉按钮,它需要组合单击过程的方法。因此,在您提出建议之前,使用 send_key() 似乎是必不可少的( x = driver.find_element_by_id('ui-id-4'))。
【解决方案2】:

我可以使用“send_keys”来运行它:

import time
number.click()
number.send_keys("200")
var200=driver.find_element_by_xpath("""//*[@id="ui-id-4"]""")
var200.click()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-01
    • 2018-12-27
    • 1970-01-01
    • 2018-04-30
    • 1970-01-01
    • 2021-01-31
    • 2020-08-06
    • 2017-04-22
    相关资源
    最近更新 更多