[英]Clicking a radio button in Selenium with Java for Internet Explorer
我的代码在FF和Chrome上完美运行,IE驱动程序启动,但未单击单选按钮:
WebElement radio = driver.findElement(By.xpath("//input[@value='5'][@name='rPay']/following-sibling::span"));
System.out.println(radio.isDisplayed());
radio.click();
System.out.println(radio.isSelected());
我得到的输出是true,false,表示该元素可见但未被单击。 这是我在其上运行测试的html代码:
<input type="radio" onclick="CheckPayment(document.frmWS,'');" value="5" name="rPay" style="position: absolute; left: -9999px;">
<span class="custom-radio"></span>
实际上,我必须单击span标签,而不是input标签。 在Firefox和Chorme中,它将无法正常工作。
在致电IEDriver之前,请包括以下功能。
DesiredCapabilities ieCapabilities = DesiredCapabilities.internetExplorer();
ieCapabilities.setCapability("nativeEvents", false);
ieCapabilities.setCapability("unexpectedAlertBehaviour", "accept");
ieCapabilities.setCapability("ignoreProtectedModeSettings", true);
ieCapabilities.setCapability("disable-popup-blocking", true);
ieCapabilities.setCapability("enablePersistentHover", true);
driver = new InternetExplorerDriver(ieCapabilities);
isDisplayed()和isSelected()是造成这种差异的原因。 让我们在下面尝试,它应该可以工作。
WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement radio = wait.until(ExpectedConditions.elementToBeSelected(By.xpath("//input[@name='rPay']//span[@class='custom-radio']")));
使用以下代码:-
WebElement element= driver.findElement(By.xpath("//input[@value='5'][@name='rPay']/following-sibling::span"));
JavascriptExecutor executor = (JavascriptExecutor) driver;
executor.executeScript("arguments[0].click();", element);
或尝试这个
driver.findElement(By.xpath("//input[@value='5'][@name='rPay']/following-sibling::span")).sendKeys(Keys.ENTER);
希望对您有所帮助:)
如果仍然遇到任何问题,请与我联系:)
搜索了整个下午之后,我发现了所缺少的东西。 我的IE Web驱动程序代码是这样的:
DesiredCapabilities cap = new DesiredCapabilities();
cap.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);
cap.setCapability(InternetExplorerDriver.ELEMENT_SCROLL_BEHAVIOR, true);
cap.internetExplorer().setCapability("ignoreProtectedModeSettings", true);
cap.setCapability("IE.binary", "C:/Program Files (x86)/Internet Explorer/iexplore.exe");
cap.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
cap.setJavascriptEnabled(true);
cap.setCapability("requireWindowFocus", true);
cap.setCapability("enablePersistentHover", false);
System.setProperty("webdriver.ie.driver", System.getProperty("user.dir")+"\\webdriver\\iedriverserver.exe");
WebDriver driver = new InternetExplorerDriver(cap);
添加一行之后,我在网上找到了某个地方,它工作正常:
cap.setCapability("nativeEvents", false);
非常感谢大家的帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.