如何判断元素是否可点击? - 硒
How to judge that the element is clickable or not? - Selenium
对于 URL 我正在尝试诱导点击下一页按钮。
为确保该按钮是否可点击,我尝试了以下操作:
WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.fa.fa-angle-right')))
但这甚至适用于最后一页。
我的理解哪里出错了?
如何判断一个按钮是否可以点击呢?
在最后一页,下一页按钮是灰色的。
大家注意的话,当按钮是getting grayed out
的时候,它有一个class
attribute
的属性值是getting changed到disabled
.
您可以制作一个 function
并将下面的代码放入其中,可以 call
根据您的 requirement
.
示例代码:
wait = WebDriverWait(driver, 20)
next_button = wait.until(EC.element_to_be_clickable((By.XPATH, "//a[@aria-label='next page']")))
try:
if next_button.get_attribute('class') == "disabled":
print('Next button is not clickable anymore')
else:
print('Next button is available')
next_button.click()
except:
print('Something went wrong')
pass
进口:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
.element_to_be_clickable
甚至可以点击禁用的元素,因此寻找其他方法来实现您的目标。
在最后一页有独特的元素,这个选择器:
a.disabled .fa.fa-angle-right
您可以使用 .find_elements_by_*
方法检查元素的大小以确定是否存在,这将 return 列出。
看看这个简单的循环:
driver.get("https://esb.ie/tns/press-centre/2021")
try:
# Here I face cookie setting, accept
WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.ID, 'onetrust-accept-btn-handler'))).click()
except:
print('no cookie setting appear')
while True:
WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.fa.fa-angle-right'))).click()
#check last page
if(len(driver.find_elements_by_css_selector('a.disabled .fa.fa-angle-right')) > 0):
break;
你也可以这样试试:
try:
while True:
if driver.find_element_by_xpath("//a[@aria-label='next page']").get_attribute("class")=='disabled':
print("Disabled")
break
driver.find_element_by_xpath("//a[@aria-label='next page']").click()
print("Clickable")
time.sleep(5)
except Exception as e:
print(e)
Clickable
Clickable
Clickable
Disabled
对于 URL 我正在尝试诱导点击下一页按钮。 为确保该按钮是否可点击,我尝试了以下操作:
WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.fa.fa-angle-right')))
但这甚至适用于最后一页。 我的理解哪里出错了? 如何判断一个按钮是否可以点击呢? 在最后一页,下一页按钮是灰色的。
大家注意的话,当按钮是getting grayed out
的时候,它有一个class
attribute
的属性值是getting changed到disabled
.
您可以制作一个 function
并将下面的代码放入其中,可以 call
根据您的 requirement
.
示例代码:
wait = WebDriverWait(driver, 20)
next_button = wait.until(EC.element_to_be_clickable((By.XPATH, "//a[@aria-label='next page']")))
try:
if next_button.get_attribute('class') == "disabled":
print('Next button is not clickable anymore')
else:
print('Next button is available')
next_button.click()
except:
print('Something went wrong')
pass
进口:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
.element_to_be_clickable
甚至可以点击禁用的元素,因此寻找其他方法来实现您的目标。
在最后一页有独特的元素,这个选择器:
a.disabled .fa.fa-angle-right
您可以使用 .find_elements_by_*
方法检查元素的大小以确定是否存在,这将 return 列出。
看看这个简单的循环:
driver.get("https://esb.ie/tns/press-centre/2021")
try:
# Here I face cookie setting, accept
WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.ID, 'onetrust-accept-btn-handler'))).click()
except:
print('no cookie setting appear')
while True:
WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.fa.fa-angle-right'))).click()
#check last page
if(len(driver.find_elements_by_css_selector('a.disabled .fa.fa-angle-right')) > 0):
break;
你也可以这样试试:
try:
while True:
if driver.find_element_by_xpath("//a[@aria-label='next page']").get_attribute("class")=='disabled':
print("Disabled")
break
driver.find_element_by_xpath("//a[@aria-label='next page']").click()
print("Clickable")
time.sleep(5)
except Exception as e:
print(e)
Clickable
Clickable
Clickable
Disabled