如何等待对象无法点击?

时间:2018-02-13 11:47:37

标签: python google-chrome selenium-webdriver

我可以轻松检查对象是否可点击: -

WebDriverWait(driver, 10).until(ec.element_to_be_clickable((By.XPATH, '//*[@id="table-defaults-7"]/div/div/div/div/span/button[2]')))

有没有办法做相反的事情?我的情况是我有一个带有“保存并取消”按钮的页面。当我更改页面上的数据时,两个按钮都变为可点击,但是当我单击“保存”时,它们都变得不可点击,这是我需要检查的事件,以确保单击了保存按钮。

这可能吗?

干杯

2 个答案:

答案 0 :(得分:2)

我假设您的save按钮的属性可以是enabled  或disabled。 假设在启用和禁用之间切换的属性名为status

import time

element = driver.find_element(By.XPATH, 'your xpath')

#after clicking the save button

buttonStatus = element.get_property('status')    # should be "enabled"
timeout = 0

# loop till the status becomes disabled or a timeout
while buttonStatus != 'disabled' and timeout <= 5:
    buttonStatus = element.get_property('status')
    timeout += 1
    time.sleep(1)                               # sleep for 1 second

请检查element.is_enabled()方法并相应更改上述代码。

答案 1 :(得分:0)

尝试否定(not方法)。

java 版本:

new WebDriverWait(driver, 10).until(not(ExpectedConditions.elementToBeClickable(By.xpath("//*[@id='table-defaults-7']/div/div/div/div/span/button[2]'"))));

链接到这里:

https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/support/ui/ExpectedConditions.html#not-org.openqa.selenium.support.ui.ExpectedCondition-