-3

我的应用程序中有一个链接,该链接在 60 秒后启用。我必须验证,该链接仅在 60 秒后才启用,而不是在那之前。试过以下方法:

  1. 我已经尝试element to be clickable() 使用 fluent wait/webdriver wait/thread.sleep 并且所有都返回该元素已启用,因为它实际上已禁用到 60 秒。

  2. 我也试过getAttribute("disabled"),它也返回false。

我可以在 html 中看到的唯一区别是类属性。当它被禁用时,类属性值会添加额外的文本(禁用)。

4

2 回答 2

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 秒结束前未被禁用,则断言将失败。

于 2019-05-31T10:16:45.213 回答
0

由于应用程序中的链接在60秒后启用,直到那时(被禁用),该class属性包含附加值disabled,要验证此用例,您可以使用try-catch{}块,并且可以使用以下基于Python定位器策略之一:

  • 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")
    
于 2019-05-31T16:25:12.127 回答