【问题标题】:Selenium: Determine status of WebElement by CssSelectorSelenium:通过 CssSelector 确定 WebElement 的状态
【发布时间】:2017-01-23 19:02:40
【问题描述】:

我正在通过CssSelector 识别可点击的WebElement。我正在使用的示例代码是:

String selectorString = "a.some-text.item";

WebElement we = driver.findElement(By.cssSelector(selectorString));
we.click();

问题是,单击该项目后,其CssSelector 更改为a.some-text.item.clicked。我仍然可以通过使用上面的selectorString 变量来安全地识别它。但是,我只想在之前没有点击过的情况下点击它。

如何确定项目状态,即其cssSelector 名称是a.some-text.item 还是a.some-text.item.clicked

【问题讨论】:

    标签: java selenium selenium-webdriver automation css-selectors


    【解决方案1】:

    如果之前没有点击过,我只想点击它。

    尝试使用cssSelector:not(selector) 函数来确定只有未点击的元素:-

    String selectorString = "a.some-text.item:not(.clicked)";
    
    WebElement we = driver.findElement(By.cssSelector(selectorString));
    we.click();
    

    已编辑 :- 如果您只想在点击后确定元素是否包含clicked 类,请尝试如下操作:-

    String selectorString = "a.some-text.item";
    driver.findElement(By.cssSelector(selectorString)).click();
    
    //Now verify element clicked or not 
    WebElement we = driver.findElement(By.cssSelector(selectorString));
    String msg =  (we.getAttribute("class").contains("clicked")) ? "element clicked" : "element not clicked";
    System.out.println(msg);
    

    【讨论】:

    • 这只是给了我一个超时。即使在网站上将其更改为a.some-text.item.clicked 后,我也可以找到带有a.some-text.item 的元素。匹配元素后,我想确定是否将其与 .clicked 扩展名匹配或不匹配。理想情况下,无需等待超时。
    • @nautical 实际上我不确定你想如何确定元素是否被点击,但我只是试图理解并根据我的理解编辑我的答案,如果有任何混淆,请尝试我知道更好的解决方案。谢谢..:)
    • @nautical 或者如果只想获取未点击的元素,为避免超时异常,您可以使用 findElements 和先前的答案 cssSelector 使用 :not(selector) 函数并检查列表大小是否大于 0 表示您已经找到未点击的元素,否则元素已被点击,如果不清楚,请告诉我..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-01
    • 1970-01-01
    • 2017-04-28
    • 1970-01-01
    • 1970-01-01
    • 2017-11-03
    相关资源
    最近更新 更多