【问题标题】:how to know if a button is enabled using selenium?如何知道是否使用 selenium 启用了按钮?
【发布时间】:2020-11-05 09:50:43
【问题描述】:

我想知道一个按钮是启用还是禁用,以便我可以点击它。 我试过这段代码,但似乎没有用:

button = browser.find_elements_by_id("join_button_input")[0].click()
            print(button)
            if button == None:
                k = 1
                while (k<=10):
                    time.sleep(10)
                    browser.refresh()
                    button
                    k+=1

这是我正在使用的 html 文本:

<input id="join_button_input" type="button" value="Join session" class="btn btn-primary" onclick="M.mod_bigbluebuttonbn.rooms.join('http://live.webcentreindia.com/mod/bigbluebuttonbn/bbb_view.php?action=join&id=893&bn=890');" disabled="true">

【问题讨论】:

  • 可以通过.find_elements_by_id("join_button_input")[0].get_attribute('disabled')查看属性值
  • @frianH 当然,给定 id 的按钮只能有一个。所以:.find_element_by_id("join_button_input").click()
  • @Booboo 是的,正确的,ID 在 HTML 页面中应该是唯一的。但指的是OP,用户使用.find_elements而不是.find_element

标签: python html selenium


【解决方案1】:

只是添加一个答案是指带有一点解释的评论。

可以通过.get_attribute('disabled')方法查看属性值。

我认为你应该使用.find_element*(没有s)而不是.find_elements*,因为id 的查找是唯一的:

disable_val = driver.find_element_by_id('join_button_input').get_attribute('disabled')
if disable_val == 'true':
    #perform
    ....
    ....

【讨论】:

    【解决方案2】:

    BeautifulSoup 在这里无济于事,因为该页面使用 javascript 来呈现文本(尽管selenium 会有所帮助)。或者你可以使用re/json模块来提取数据:

    import re
    import json
    import requests
    
    ExampleSite = "https://throwbin.io/liWq2S3"
    html_doc = requests.get(ExampleSite).text
    
    d = re.search(r'}\((.*?)\)\);', html_doc).group(1)
    d = json.loads('[' + d + ']')
    
    print('Title:', d[4])
    print('-' * 80)
    print(d[5])
    

    打印:

    Title: Soup
    --------------------------------------------------------------------------------
    Apple
    Orange
    Cake
    Pizza
    

    【讨论】:

      猜你喜欢
      • 2020-12-27
      • 2016-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多