我正在一个门户网站上工作,我们可以从三个单选按钮中选择凭证类型。它不起作用:我收到错误。
import java.util.concurrent.TimeUnit;
import org.apache.log4j.Logger;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
public class Vouchertest {
public static void main(String[] args) {
WebDriver driver=new FirefoxDriver();
Logger log = Logger.getLogger("devpinoyLogger");
driver.get("url");
log.debug("entring username");
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.findElement(By.xpath("//*[@id='UserName']")).sendKeys("xoxo");
log.debug("entering password");
driver.findElement(By.xpath("//*[@id='Password']")).sendKeys("Password123");
log.debug("Clicking login");
driver.findElement(By.xpath("//*[@id='loginForm']/form/div[4]/div/input")).click();
log.debug("Clicking voucher");
driver.findElement(By.xpath("html/body/nav/div[2]/div[2]/ul/li[2]/a")).click();
log.debug("Clicking create_voucher");
driver.findElement(By.xpath("//*[@id='main']/a[1]")).click();
**log.debug("Clicking voucher_type");
driver.findElement(By.cssSelector("input[value='card']")).click();
}
}
这是html代码:
<input id="VoucherType" type="radio" value="Corporate" name="VoucherType">
<label for="Corporate_Certificate">Corporate Certificate</label>
<input id="VoucherType" type="radio" value="Card" name="VoucherType">
<label for="Gift_Card">Gift Card</label>
<input id="VoucherType" type="radio" value="Adv" name="VoucherType">
<label for="Advanced_Payment">Advanced Payment</label>
这是跟踪:
Exception in thread "main" org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"css selector","selector":"input[value='card']"}
Command duration or timeout: 30.12 seconds
答案 0 :(得分:1)
我可以在你的css选择器中立即看到的一个问题是在html代码中你的值为卡(C是大写)但在定位器中你传递的值是简单的情况<强>卡强>
请试用以下定位器:
Css选择器:input[value='Card']
Xpath://input[@value='Card']
如果没有这个,请检查你是否在iframe中有这些单选按钮。如果是这样,你必须先切换到iframe。
答案 1 :(得分:1)
在您的HTML代码中,“Card”以大写字母开头,而在您的Java代码中,它的编写方式如下:“input [value ='card']”