繁体   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