繁体   English   中英

单击Selenium with Java for Internet Explorer中的单选按钮

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM