页面上的提交按钮不会使用Selenium ChromeDriver

时间:2016-09-22 08:00:11

标签: java selenium jsf selenium-chromedriver

我们有两个不同的页面,每个页面都有提交按钮。在一个页面上提交按钮注册单击并继续测试。在第二页上,您可以看到Selenium点击按钮,但按钮不会注册点击,测试将失败。 工作按钮:

<div class="clearfix">
    <button id="form2:btnContinue" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-icon-right fr" type="submit" onclick="PrimeFaces.ab({s:"form2:btnContinue",u:"form1 form2 form3 form2:btnContinue"});return false;" name="form2:btnContinue" role="button" aria-disabled="false">
    <span class="ui-button-icon-right ui-icon ui-c fa fa-caret-right"></span>
    <span class="ui-button-text ui-c">Continue</span>
    </button>
    </div>
    </div>

非工作按钮:

<div class="clearfix ">
<button id="form:j_idt210" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only fr" type="submit" onclick="PrimeFaces.ab({s:"form:j_idt210",u:"form form2 confirmationPanel"});return false;" name="form:j_idt210" role="button" aria-disabled="false">
<span class="ui-button-text ui-c">Submit Payment</span>
</button>
</div>
</div>

我同样宣布两个Webelements。工作按钮:

@FindBy(xpath = "//*[@id='form2:btnContinue']")
    private WebElement processPaymentButton;

非工作按钮:

@FindBy(xpath = "//*[@id='form:j_idt210']")
    private WebElement submitFormButton; 

此外,PageObjects看起来完全相同。工作按钮:

public void setProcessPayment() {
        WebDriverWait wait = new WebDriverWait(driver, 9);
        wait.until(ExpectedConditions.visibilityOf(processPaymentButton));
        wait.until(ExpectedConditions.elementToBeClickable(processPaymentButton));

        processPaymentButton.click();

        wait.until(ExpectedConditions.visibilityOf(verificationInputField));

        sendKeysElement(verificationInputField, "1111");
        sendPaymentButton.click();
    }

非工作按钮:

public void setProcessPayment() {
        WebDriverWait wait = new WebDriverWait(driver, 9);
        wait.until(ExpectedConditions.visibilityOf(submitFormButton));
        wait.until(ExpectedConditions.elementToBeClickable(submitFormButton));

        submitFormButton.click();

        wait.until(ExpectedConditions.visibilityOf(authorizationTokenField));

        sendKeysElement(authorizationTokenField, "1111");
        authorizePaymentButton.click();
    }

我尝试使用.sendKeys(Keys.ENTER),脚本或Action更改 .click()。基本上我尝试了我能找到的一切。我也改变了方式按钮的访问方式(CSS,ID,不同的Xpath方法)。没有什么工作,但是当你观看跑步测试时,你可以清楚地看到,Selenium点击了按钮。 Button刚刚与Selenium合作,但它已经停止了。

我们正在使用Selenium 2.47.1和最新的ChromeDriver。手动单击按钮时按钮正在工作。 谢谢你的帮助。

注意:问题与按钮本身的关系比Selenium更多。如果您给我们提示如何修复按钮工作,我们将感激不尽。

1 个答案:

答案 0 :(得分:0)

解决整个问题的方法是使用上面的“银行代码”组件。该组件包含自动填充程序,它将显示可能结果的表格(不同的银行代码和用于交易的渠道)。
整个问题出现在我发送给这个组件的代码中,我发送了带有通道的银行代码,导致组件上的Java崩溃,阻止按钮运行。我发现这是用Selenium IDE尝试我的测试。现在它的工作。
从整个问题中吸取的教训是,如果您只是调整测试,页面上的每个组件都会相互干扰,并且您的按钮可以正常工作。