在 Python 中使用 Selenium 检查是否禁用了 link?
Check whether a link is disabled using Selenium in Python?
我需要检查是否设置了link的禁用属性,在下面的代码中,
<a id="ctl00_ContentPlaceHolder1_lbtnNext" disabled="disabled">Next</a>
但是如果我执行最后一页,
next_pg=driver.find_element_by_xpath("//a[@id='ctl00_ContentPlaceHolder1_lbtnNext']")
next_pg.click()
print next_pg.is_enabled()
我得到 True 作为输出,但事实并非如此。
此外,仅在最后一页上 Next 编码如上,在所有其他页面中编码如下,因此在检查时is_enabled() 标签,会产生错误。
<a id="ctl00_ContentPlaceHolder1_lbtnNext" href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$lbtnNext','')">
我该如何解决?
使用this answer获取标签的属性:
attrs = driver.execute_script('var items = {}; for (index = 0; index < arguments[0].attributes.length; ++index) { items[arguments[0].attributes[index].name] = arguments[0].attributes[index].value }; return items;', next_pg)
并检查是否存在 disabled
标签及其值:
if 'disabled' in attrs and attrs['disabled'] == 'disabled':
# ...
我需要检查是否设置了link的禁用属性,在下面的代码中,
<a id="ctl00_ContentPlaceHolder1_lbtnNext" disabled="disabled">Next</a>
但是如果我执行最后一页,
next_pg=driver.find_element_by_xpath("//a[@id='ctl00_ContentPlaceHolder1_lbtnNext']")
next_pg.click()
print next_pg.is_enabled()
我得到 True 作为输出,但事实并非如此。 此外,仅在最后一页上 Next 编码如上,在所有其他页面中编码如下,因此在检查时is_enabled() 标签,会产生错误。
<a id="ctl00_ContentPlaceHolder1_lbtnNext" href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$lbtnNext','')">
我该如何解决?
使用this answer获取标签的属性:
attrs = driver.execute_script('var items = {}; for (index = 0; index < arguments[0].attributes.length; ++index) { items[arguments[0].attributes[index].name] = arguments[0].attributes[index].value }; return items;', next_pg)
并检查是否存在 disabled
标签及其值:
if 'disabled' in attrs and attrs['disabled'] == 'disabled':
# ...