selenium在Kotlin =>行动不可用

我试图通过在IntelliJ IDEA中使用Kotlin Selenium来点击按钮。 我需要选择表格的前10行,右键单击它们并在上下文菜单中单击一个条目。 因此,我需要一个Actions对象 – 已经在这里的问题开始! “行动”是用红色写的,IntelliJ拒绝导入“org.openqa.selenium.interactions.Actions”它说“未解决的参考:行动”。 但是一定有办法做到这一点! 我越来越绝望,请帮助我!

这是我的测试课:

import org.openqa.selenium.By import org.openqa.selenium.WebDriver import org.openqa.selenium.chrome.ChromeDriver import org.testng.annotations.* import java.awt.event.KeyEvent class BatchProcessTest { init{ System.setProperty("webdriver.chrome.driver", "C:\\Users\\\chromedriver.exe") } private val driver = ChromeDriver() as WebDriver private val testBase : TestBase = TestBase(driver) private var isTestClassInitialized = false @BeforeTest private fun initiateTestSuite(){ testBase.startTestObject() testBase.openWebPage() testBase.loginTestUserUsingCredentials(,) testBase.waitForMilliseconds(5000) isTestClassInitialized = true } @Test private fun testUnderConstruction() { while(!isTestClassInitialized){ testBase.waitForMilliseconds(1000) } setPreconds() } private fun setPreconds(){ prepareACategoryWithAtLeastTenEntriesAsK1() } private fun prepareACategoryWithAtLeastTenEntriesAsK1(){ createAPattern(, ) executePatterns() testBase.getButtonByCaption("Back").click() changeIntoCategory() moveTenOfTheMovedEntriesIntoK1() } private fun createAPattern(text : String, category: String){ val settingsButton = driver.findElements(By.className("lm-button")).get(0) settingsButton.click() testBase.waitForMilliseconds(3000) val addButton = testBase.getButtonByCaption("Add") addButton.click() val patternTextField = testBase.getTextFieldByLabelCaption("Pattern name") patternTextField.sendKeys(text) testBase.selectComboboxElementUsingLabelCaption(category,"Pattern name") testBase.waitForMilliseconds(1000) val saveButton = testBase.getButtonByCaption("Save") saveButton.click() } private fun executePatterns(){ testBase.getButtonByCaption("Execute").click() } private fun changeIntoCategory(categoryName : String){ testBase.getButtonByCaption(name of category K1).click() testBase.waitForMilliseconds(3000) } private fun moveTenOfTheMovedEntriesIntoK1(categoryName : String) { val action = Actions(driver) val allLines = driver.findElements(By.className("v-grid-row")) action.click(allLines.get(0)).perform() var i = 0 while (i < 11) { i++ action.click(allLines.get(i)).perform() } action.contextClick().perform() 

}

这是我的TestBase类(辅助类):

 import org.openqa.selenium.By import org.openqa.selenium.Keys import org.openqa.selenium.WebDriver import org.openqa.selenium.WebElement class TestBase(driver: WebDriver) { val driver: WebDriver = driver fun startTestObject(): Boolean { val batchProcessBuilder = ProcessBuilder("cmd", "/c", "startTheTestObject.bat") batchProcessBuilder.start() return true } fun openWebPage() { System.setProperty("webdriver.chrome.driver", "src/test/kotlin/chromedriver.exe") driver.get() driver.manage().window().maximize() waitForMilliseconds(5000) } fun loginTestUserUsingCredentials(usrName: String, usrPassword: String) { val userNameField = getTextFieldByLabelCaption("Username") val userPasswordField = getTextFieldByLabelCaption("Password") val loginButton = getButtonByCaption("Login") userNameField.sendKeys(usrName) userPasswordField.sendKeys(usrPassword) loginButton.click() } fun waitForMilliseconds(milliseconds: Long) { Thread.sleep(milliseconds) } fun getButtonByCaption(caption: String): WebElement { val allButtonsOnSettingsPage = driver.findElements(By.className("lm-button")) val filteredButtons = allButtonsOnSettingsPage.filter { it.text.contains(caption) } return filteredButtons.get(0) } fun getTextFieldByLabelCaption(caption: String): WebElement { val allFormLayoutsOnThisPage = driver.findElements(By.className("v-formlayout-row")) val filteredFormLayouts = allFormLayoutsOnThisPage.filter { it.findElement(By.className("v-formlayout-captioncell")).text.contains(caption) } val searchedTextField = filteredFormLayouts.get(0).findElement(By.className("v-textfield")) return searchedTextField } fun selectComboboxElementUsingLabelCaption(optionText: String, labelCaption: String) { val combobox = getComboboxdByLabelCaption(labelCaption) val window = driver.findElement(By.className("v-window")) combobox.click() waitForMilliseconds(2000) var i = 0 var isEntryFound = false while (!isEntryFound){ var actualElementText = driver.findElements(By.className("gwt-MenuItem")).get(i).text isEntryFound = actualElementText.equals(optionText) combobox.sendKeys(Keys.UP) waitForMilliseconds(700) i++ } combobox.sendKeys(Keys.ENTER) waitForMilliseconds(1000) } fun getComboboxdByLabelCaption(caption: String): WebElement { waitForMilliseconds(2000) val allFormLayoutsOnThisPage = driver.findElements(By.className("v-formlayout-row")) val filteredFormLayouts = allFormLayoutsOnThisPage.filter { it.findElement(By.className("v-formlayout-captioncell")).text.contains(caption) } val searchedComboboxElement = filteredFormLayouts.get(0).findElement(By.className("v-filterselect-input")) return searchedComboboxElement } } 

这是POM:

  4.0.0 KotlinTest KotlinTest 0.0.1-SNAPSHOT jar KotlinTest http://maven.apache.org  UTF-8 1.1.2-4 6.10 3.8.1 3.8.1    org.jetbrains.kotlin kotlin-stdlib ${kotlin.version}   org.jetbrains.kotlin kotlin-test-junit ${kotlin.version} test   org.seleniumhq.selenium selenium-java ${selenium.version}   org.testng testng ${testng.version} test   org.seleniumhq.selenium selenium-support ${selenium.version}   org.apache.maven.plugins maven-surefire-plugin 2.20.1   junit junit 4.12 test   org.seleniumhq.selenium selenium-server-standalone ${selenium-server-standalone.version}    src/main/kotlin src/test/kotlin   org.jetbrains.kotlin kotlin-maven-plugin ${kotlin.version}   compile compile  compile    test-compile test-compile  test-compile        

非常感谢!

感谢您检查代码。 错别字被删除,我find了我的问题的原因。 缺少存储库导致错误:

    jcenter jcenter.bintray.com   

小心从互联网上复制这个,它可以在POM中产生好奇的效果。 (可能是由被破坏的字符引起)感谢您的帮助! – AcMuD 1分钟前编辑