我的应用程序中有一个链接,该链接在60秒后启用。我必须验证,该链接仅在60秒后才启用,而不是在此之前。 尝试过以下方法:
我尝试了element to be clickable()
并使用流畅的wait / webdriver wait / thread.sleep,所有人都返回了启用该元素的位置,因为该元素实际上一直被禁用到60秒。
我也尝试过getAttribute(“ disabled”)also,它也返回false。
我可以在html中看到的唯一区别是class属性。禁用该属性时,将向class属性值添加其他文本(禁用)。
答案 0 :(得分:1)
尝试一下(并根据需要尝试tweek):
long ts1 = System.currentTimeMillis()/1000;
new WebDriverWait(driver, 60).until(ExpectedConditions.attributeToBe(element, "disabled", null);
long ts2 = System.currentTimeMillis()/1000;
Assert.assertTrue((ts2-ts1)>=60);
如果在60秒内未禁用该元素,则断言将失败。
答案 1 :(得分:0)
在应用程序内的链接在 60 秒后启用,直到此(被禁用), class
属性包含附加值 disabled ,要验证此用例,可以使用try-catch{}
块,也可以使用以下基于 Python 的Locator Strategies之一:
CSS_SELECTOR
:
try:
WebDriverWait(driver, 60).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "tag_name[some_attribute='value_of_some_attribute']:not(.disabled)")))
print("Class attribute failed to contain the value disabled for 60 seconds")
except TimeoutException:
print("Class attribute successfully contained the value disabled for 60 seconds")
XPATH
:
try:
WebDriverWait(driver, 60).until(EC.element_to_be_clickable((By.XPATH, "//tag_name[@some_attribute='value_of_some_attribute' and not(@class='disabled')]")))
print("Class attribute failed to contain the value disabled for 60 seconds")
except TimeoutException:
print("Class attribute successfully contained the value disabled for 60 seconds")
答案 2 :(得分:-1)
您可以做的是先检查是否已禁用它,然后在60秒后检查它是否已启用,在这种情况下,下面的代码应该可用:
boolean checkDisabled = element.isEnabled(); // this should return false
Thread.sleep(60000);
boolean checkDisabled = element.isEnabled(); // this should return true