Selenium:我怎么能等到光标变化?

时间:2014-07-16 19:48:38

标签: selenium

使用CSS / JS可以更改用户看到鼠标指针的光标。例如,您可以设置cursor: wait以将光标更改为微调器。

我想做的是进行Selenium测试,等待光标变为/ wait。但是,我找不到任何预期的条件" (EC)方法,用于观察光标的CSS值。

有没有办法等待光标更改(仅仅是睡眠并定期检查其值)?

2 个答案:

答案 0 :(得分:2)

理论上,我相信你可以等到element.GetCssValue("cursor") == "wait"。你可以提供一个测试它的演示页面,这将是很棒的。

为常见wait.Until用法创建了预期条件(EC),而等待光标似乎很少见。

C#中的示例代码:

// depends on which element you want to wait, here take <body> as an example
var wait = new WebDriverWait(driver, TimeSpan.FromMilliseconds(5000));
wait.Until(d => d.FindElement(By.TagName("body")).GetCssValue("cursor") == "wait");

答案 1 :(得分:0)

@Yi Zheng的答案很完美,但是对于使用Python版Selenium的任何人(比如我自己),我最后做的就是创建一个类似的类:

class CursorChangesFromWaiting():
    """Helper class for waiting until the cursor changes back to normal)"""
    def __init__(self, browser):
        self.browser = browser

    def __call__(self, ignored):
        """This will be called every 500ms by Selenium until it returns true (or we time out)"""
        cursor = self.browser.find_element_by_tag_name("body").value_of_css_property("cursor")
        return cursor != "wait"

然后我在测试中能够做到以下几点:

WebDriverWait(browser, 20).until(CursorChangesFromWaiting(browser))