无法让 selenium webdriver 单击复选框
Can't make selenium webdriver click the checkbox
我正在研究 eclipse neon、selenium webdriver 2.53.0 和 firefox 45.3.0 esr。
我无法让 selenium 标记为网站上唯一的复选框。这是我的测试脚本:
package testy;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.Select;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class rejestr {
public WebDriver driver;
@BeforeMethod
public void beforeMethod() {
driver = new FirefoxDriver();
driver.manage().window().maximize();
driver.navigate().to("http://dev.wedkarz.pzw.pl/#/login");
}
@Test
public void f () throws InterruptedException {
driver.findElement(By.className("nav-item")).click();
driver.findElement(By.id("firstName")).sendKeys("Jan");
driver.findElement(By.id("lastName")).sendKeys("Nowak");
driver.findElement(By.id("email")).sendKeys("jnowak@o2.pl");
driver.findElement(By.id("plainPassword")).sendKeys("password");
new Select(driver.findElement(By.id("district"))).selectByVisibleText("Okręg PZW w Bydgoszczy");
new Select(driver.findElement(By.id("circle"))).selectByVisibleText("Koło PZW nr 31");
driver.findElement(By.id("fishingLicense")).sendKeys("12345678990");
driver.findElement(By.id("squaredOne")).click();
}
@AfterMethod
public void afterMethod() {
System.out.print("Test zakończony powodzeniem");
driver.quit();
}
}
这是复选框的 html 代码:
<div class="row form-group m-b-lg">
<div class="squaredOne">
<input id="squaredOne" name="check" type="checkbox" value="None" class="ng-untouched ng-valid ng-dirty">
<label for="squaredOne">
<p>Wyrażam zgodę na otrzymywanie od PZW informacji<br> o charakterze promocyjnym i reklamowym
przekazywanych drogą elektroniczną, w tym przesyłanych z wykorzystaniem telekomunikacyjnych
urządzeń końcowych (np. komputer, tablet).</p>
</label>
</div>
<span class="help-block">
</span>
</div>
非常感谢您的帮助,因为我已经为此奋斗了 2 天。
如果您使用的是 IE 浏览器,则有点棘手 -
if (driver.Capabilities.BrowserName.Equals(“internet explorer"))
driver.findElement(By.id("squaredOne").SendKeys(Keys.Space);
else
driver.findElement(By.id("squaredOne").Click();
或者尝试使用 Xpath 访问元素
driver.findElement(By.xpath("//input[@type='checkbox']")).click();
如果这不起作用,请尝试使用 class 名称
WebElement mybox = driver.findElement(By.className("squaredOne"));
mybox.click();
您的代码 driver.findElement(By.id("squaredOne")).click()
应该可以工作。但如果没有,那么您可以尝试:
将选择器更改为 xpath:
driver.findElement(By.xpath("//input[@id='squaredOne']")).click();
点击父级div:
driver.findElement(By.xpath("//div[./input[@id='squaredOne']]")).click()`
使用操作class:
Actions actions = new Actions(driver);
actions.click(driver.findElement(By.xpath("//input[@id='squaredOne']")));
actions.build().perform();
我正在研究 eclipse neon、selenium webdriver 2.53.0 和 firefox 45.3.0 esr。 我无法让 selenium 标记为网站上唯一的复选框。这是我的测试脚本:
package testy;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.Select;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class rejestr {
public WebDriver driver;
@BeforeMethod
public void beforeMethod() {
driver = new FirefoxDriver();
driver.manage().window().maximize();
driver.navigate().to("http://dev.wedkarz.pzw.pl/#/login");
}
@Test
public void f () throws InterruptedException {
driver.findElement(By.className("nav-item")).click();
driver.findElement(By.id("firstName")).sendKeys("Jan");
driver.findElement(By.id("lastName")).sendKeys("Nowak");
driver.findElement(By.id("email")).sendKeys("jnowak@o2.pl");
driver.findElement(By.id("plainPassword")).sendKeys("password");
new Select(driver.findElement(By.id("district"))).selectByVisibleText("Okręg PZW w Bydgoszczy");
new Select(driver.findElement(By.id("circle"))).selectByVisibleText("Koło PZW nr 31");
driver.findElement(By.id("fishingLicense")).sendKeys("12345678990");
driver.findElement(By.id("squaredOne")).click();
}
@AfterMethod
public void afterMethod() {
System.out.print("Test zakończony powodzeniem");
driver.quit();
}
}
这是复选框的 html 代码:
<div class="row form-group m-b-lg">
<div class="squaredOne">
<input id="squaredOne" name="check" type="checkbox" value="None" class="ng-untouched ng-valid ng-dirty">
<label for="squaredOne">
<p>Wyrażam zgodę na otrzymywanie od PZW informacji<br> o charakterze promocyjnym i reklamowym
przekazywanych drogą elektroniczną, w tym przesyłanych z wykorzystaniem telekomunikacyjnych
urządzeń końcowych (np. komputer, tablet).</p>
</label>
</div>
<span class="help-block">
</span>
</div>
非常感谢您的帮助,因为我已经为此奋斗了 2 天。
如果您使用的是 IE 浏览器,则有点棘手 -
if (driver.Capabilities.BrowserName.Equals(“internet explorer"))
driver.findElement(By.id("squaredOne").SendKeys(Keys.Space);
else
driver.findElement(By.id("squaredOne").Click();
或者尝试使用 Xpath 访问元素
driver.findElement(By.xpath("//input[@type='checkbox']")).click();
如果这不起作用,请尝试使用 class 名称
WebElement mybox = driver.findElement(By.className("squaredOne"));
mybox.click();
您的代码 driver.findElement(By.id("squaredOne")).click()
应该可以工作。但如果没有,那么您可以尝试:
将选择器更改为 xpath:
driver.findElement(By.xpath("//input[@id='squaredOne']")).click();
点击父级div:
driver.findElement(By.xpath("//div[./input[@id='squaredOne']]")).click()`
使用操作class:
Actions actions = new Actions(driver); actions.click(driver.findElement(By.xpath("//input[@id='squaredOne']"))); actions.build().perform();