簡體   English   中英

如何通過使用Java為Selenium Web驅動程序中的復選框編寫腳本

[英]How to write the script for the check box in Selenium web driver by using Java

這是我要單擊的按鈕。 我想通過使用Java在Selenium Web驅動程序中編寫自動化腳本來檢查此按鈕。

以下是該按鈕的代碼。

<label class="toggle" style="font-size:13px">
<input type="checkbox" name="checkbox-IsEFR" id="checkbox-IsEFR">
<i data-swchon-text="Yes" data-swchoff-text="No"></i>Is Enable for Rules
</label>

因為我是自動化腳本編寫的新手,所以請幫助我。 我為復選框編寫了腳本,但無法正常工作。 以下,我附上了我的腳本和所產生的錯誤。

@When("^clicks on enable for rules$")
    public void clicks_on_enable_for_rules() throws Throwable {
        driver.findElement(By.name("checkbox-IsEFR")).click();
    }

我收到的錯誤。

org.openqa.selenium.ElementNotVisibleException:元素當前不可見,因此可能無法與命令持續時間或超時進行交互:209毫秒內部版本信息:版本:'2.53.0',修訂版:'35ae25b',時間:'2016-03 -15 17:00:58'系統信息:主機:'DELL_I5',ip:'192.168.1.33',操作系統名稱:'Windows 10',os.arch:'amd64',os.version:'10 .0', java.version:“ 1.8.0_77”驅動程序信息:org.openqa.selenium.firefox.FirefoxDriver功能[{applicationCacheEnabled = true,rotatable = false,handlesAlerts = true,databaseEnabled = true,版本= 46.0,平台= WINDOWS,nativeEvents = false,acceptSslCerts = true,webStorageEnabled = true,locationContextEnabled = true,browserName = firefox,takesScreenshot = true,javascriptEnabled = true,cssSelectorsEnabled = true}]會話ID:03695ef8-bd24-49d6-b8a1-6687e3d0375c,位於sun.reflect.NativeConstructorAccessorImpl。 sun.reflect.NativeConstructorAccessorImpl上的newInstance0(本機方法)。sun.reflect.DelegatingConstructorAccessorImpl上的newInstance(未知源)。 org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:206)處的org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed處的java.lang.reflect.Constructor.newInstance(Unknown Source)處的newInstance(未知源) (ErrorHandler.java:158)在org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:678)在org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:327)在org.openqa。在at的mCollector.features.StepDefinitions_mCollector.clicks_on_enable_for_rules(StepDefinitions_mCollector.java:61)處單擊selenium.remote.RemoteWebElement.click(RemoteWebElement.java:85),然后單擊規則啟用(C:/ Users / Admins / Admin / workspace / MStudio- eBilling / src / mCollector / features / mCollector.feature:12)由以下原因引起:org.openqa.selenium.ElementNotVisibleException:元素當前不可見,因此可能無法與內部版本信息交互:版本:“ 2.53.0”,修訂版: '35ae25b',時間:'2016-03-15 17:00:58'
系統信息:主機:'DELL_I5',ip:'192.168.1.33',操作系統名稱:'Windows 10',os.arch:'amd64',os.version:'10 .0',java.version:'1.8.0_77 '
驅動程序信息:driver.version:.fxdriver.preconditions.visible(文件:/// C:/Users/Admin/AppData/Local/Temp/anonymous546390466745105063webdriver-profile/extensions/fxdriver@googlecode.com/components/command- .DelayedCommand.prototype.checkPreconditions_(file:/// C:/Users/Admin/AppData/Local/Temp/anonymous546390466745105063webdriver-profile/extensions/fxdriver@googlecode.com/components/command-processor處的processor.js:10092)。 js:12644),位於.DelayedCommand.prototype.executeInternal_ / h(file:/// C:/Users/Admin/AppData/Local/Temp/anonymous546390466745105063webdriver-profile/extensions/fxdriver@googlecode.com/components/command-processor。 js:12661)在.DelayedCommand.prototype.executeInternal_(file:/// C:/Users/Admin/AppData/Local/Temp/anonymous546390466745105063webdriver-profile/extensions/fxdriver@googlecode.com/components/command-processor.js: 12666)位於.DelayedCommand.prototype.execute / <(文件:/// C:/ Users / Admin / AppData / Local / Temp / anonymous546390466745105063webdriver-profile / extensions / fxdr iver@googlecode.com/components/command-processor.js:12608)

您可以使用顯式的wait和ExpectedConditions等待復選框可見

WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("checkbox-IsEFR"))).click();

在點擊該元素之前,最多需要等待10秒才能看到該元素。

錯誤為:“ ElementNotVisibleException:元素當前不可見,因此可能無法與之交互。”

發生此錯誤的原因可能有多種,但最可能的是:

該元素未加載到頁面上,您的代碼正在嘗試單擊它。 為了解決這個問題,您可以在代碼中放入wait語句。 可以通過放置隱式等待driver.manage().timeouts().implicitlyWait(5000L, TimeUnit.SECONDS);來施加全局等待driver.manage().timeouts().implicitlyWait(5000L, TimeUnit.SECONDS); 或者您可以嘗試在執行點擊活動之前放入明確的等待語句。

嘗試解決方案,我認為它將解決您的問題。

您可以使用以下方法在Selenium中按xpath進行搜索:

driver.find_element_by_xpath(".//*[contains(text(), 'Is Enable for Rules')]").click()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM