我正在使用Selenium使用Java语言自动化UI。
我有一个操作按钮,当用户将鼠标悬停在操作按钮上时,它会提供两个可单击的选项 - 创建和编辑
我已将CSS定位器存储为Enums for Action按钮,并将Create和Edit(可点击)链接分别存储为ACTIONBUTTON,CREATEACTION,EDITACTION。
我使用了类似下面的Java代码,但是它提供了一个错误,说明 java.lang.ClassCastException:org.openqa.selenium.By $ ByCssSelector无法转换为org.openqa.selenium.WebElement < / p>
Actions actions = new Actions(driver);
actions.moveToElement((WebElement) DCSAdminEnums.ACTIONBUTTON.getLocator());
actions.moveToElement((WebElement) DCSAdminEnums.CREATEACTION.getLocator());
actions.click();
actions.perform();
请建议您使用我拥有的枚举来帮助您更好地处理此问题。
更新: 我也尝试使用下面的代码样式,但它不起作用: - (
WebElement menu = driver.findElement((By.xpath("//*[@id='button-1177-btnInnerEl']")));
WebElement submenu = driver.findElement((By.cssSelector("a[id='menuitem-1175-itemEl']")));
Actions action = new Actions(driver);
action.moveToElement(menu).perform();
Thread.sleep(2000);
action.click(submenu).perform();
答案 0 :(得分:0)
By
和WebElement
是不同的类型,因此编译错误。
如果你在谈论没有采取行动,那么这与你原来的帖子完全不同。请问一个新问题。
WebbElement
可以检索 driver.findElement(By locator)
,因此您需要先使用driver.findElement(yourLocator)
来获取元素。
Actions actions = new Actions(driver);
actions.moveToElement(driver.findElement(DCSAdminEnums.ACTIONBUTTON.getLocator()));
actions.moveToElement(driver.findElement(DCSAdminEnums.CREATEACTION.getLocator()));
actions.click().perform();