Selenium Webdriver java:无法单击OK按钮(按钮标记中的span标记)

时间:2017-11-11 20:47:12

标签: java button selenium-webdriver

HTML code:

<div id="sieb-ui-popup-mvg-selected" class="AppletStylePopup">
    <form onsubmit="return false;" action="/ecom_enu/start.swe" method="post" name="SWEForm4_0">
        <div class="siebui-popup-btm siebui-mvg-btn-modifier">
            <span class="siebui-popup-button">
                <button id="s_4_1_79_0_Ctrl" class="siebui-ctrl-btn siebui-icon-closeapplet s_4_1_79_0 appletButton" aria-label="Responsibilities:OK" title="Responsibilities:OK" tabindex="0" data-display="OK" name="s_4_1_79_0" type="button">
                    <span>OK</span>
                </button>
            </span>
        </div>
    </form>
</div>

我想点击“确定”按钮。请帮忙,谢谢!

我已尝试使用以下内容,但它不起作用。

driver.findElement(By.cssSelector(".siebui-ctrl-btn.siebui-icon-closeapplet.appletButton")).click();

也尝试过这个,它不起作用。

driver.findElement(By.xpath(".//*button[@title='Responsibilities:OK']/span[contains(text(),'OK]")).click();

也尝试了以下,它不起作用。

driver.findElement(By.xpath("//button[contains(span/text(), 'OK')]")).click();

也试过下面,它不起作用。发生超时错误

WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt("iframe-applicationname_ModalDialog_0"));
WebElement el = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(".//span[contains(text(), 'OK')]")));
el.click();
driver.switchTo().defaultContent();

3 个答案:

答案 0 :(得分:0)

尝试使用firebugfirepath添加firefox来获取xpath。你一定能解决你的问题。如果您不知道如何使用firebug捕获xpath,请参阅this链接,如有任何问题请告诉我。在捕获xpath

之前,您应该首先向firefox添加firebug和firepath

答案 1 :(得分:0)

请你试试以下方式 -

首先获取根元素并将其保存到WebElement对象。然后找到Ok按钮元素并单击。

WebElement elem = driver.findElement(By.cssSelector("#sieb-ui-popup-mvg-selected > form > div"));
makeWait(5);  //Set any value you need for wait until appearing Ok Button       
elem.findElement(By.cssSelector("button[type='button']")).click();

创建另一个本地或全局方法等待片刻

/*
 * make some wait the execution
 */
public void makeWait(int waitForSecond)
{
    try {
        //Thread.sleep(1000 * waitForSecond);
        Thread.currentThread().sleep(1000 * waitForSecond);
    } catch (InterruptedException ie) {
        System.out.println(ie.getMessage());
    }
}

如果您不需要,也可以尝试删除makeWait()。可能它可能会有所帮助。

答案 2 :(得分:0)

请检查以下代码,这可能是有用的,

driver.findElement(By.xpath(".//*[contains(@class,'siebui-popup')]//span[text()='OK']")).click();

尝试在Mozilla中使用Firepath,以便通过检查CSS和XPATH的不同组合来获取正确的路径。它将为您提供使用选择器识别元素的正确概念。