如何检查是否点击元素- selenium

disho6za  于 2022-12-26  发布在  其他
关注(0)|答案(4)|浏览(172)

我正在尝试使用selenium来检查单击功能。这里我可以通过测试用例单击特定元素,但是对于我的测试用例来说,我需要返回元素是否被单击。如果单击发生,它应该返回true,否则需要返回false。这就是我如何执行单击操作的。

find(By.xpath("elementpath")).click();
kmbjn2e3

kmbjn2e31#

你可以添加一个监听器到元素和setAttribute作为javascript的一部分。
下面的代码会在你点击元素时发出警告。(用Python实现- execute_script = javascript execution)

element = driver.find_element_by_xpath("element_xpath")
driver.execute_script("var ele = arguments[0];ele.addEventListener('click', function() {ele.setAttribute('automationTrack','true');});",element)
element.click()
# now check the onclick attribute
print(element.get_attribute("automationTrack"))

输出:

true
wgmfuz8q

wgmfuz8q2#

  • 请看看下面的方法,这将是更可靠的,并给予你想要的结果,因为它只会点击时,元素变得可点击&告诉它是否被点击或不.*
public static boolean isClicked(WebElement element)
{ 
    try {
        WebDriverWait wait = new WebDriverWait(yourWebDriver, 5);
        wait.until(ExpectedConditions.elementToBeClickable(element));
        element.click();
        return true;
    } catch(Exception e){
        return false;
    }
}
  • 在你的类中调用这个方法,比如- boolean bst = className.isClicked(elementRef);*
ecbunoof

ecbunoof3#

您可以让try-catch块为您做这件事。

try{
   find(By.xpath("elementpath")).click();
}catch(StaleElementReferenceException e){
   return false;
}
return true;
ztyzrc3y

ztyzrc3y4#

受@supputuri的启发,我提出了这个使用Junit测试的Java解决方案,尽管我需要做的主要更改是在JS中。

String script = "let clicked = false;"
    + "var btn = arguments[0];"
    + "btn.addEventListener('click', () => {"
    + "window.clicked = true;"//without window failed
    + "});"

我选择了一个外部变量来存储点击结果,因为我的按钮在点击后即将从dom中消失。我不认为您可以请求属于不存在元素的数据。使用之前创建的Javascript Executor执行JS以实际添加侦听器:

js.executeScript(script, myButton);

点击并检索值:

myButton.click();
Boolean clicking = (Boolean) js.executeScript("return clicked;");
assertTrue(clicking);

相关问题