我们有两个不同的页面,每个页面都有提交按钮。在一个页面上提交按钮注册单击并继续测试。在第二页上,您可以看到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更多。如果您给我们提示如何修复按钮工作,我们将感激不尽。
答案 0 :(得分:0)
解决整个问题的方法是使用上面的“银行代码”组件。该组件包含自动填充程序,它将显示可能结果的表格(不同的银行代码和用于交易的渠道)。
整个问题出现在我发送给这个组件的代码中,我发送了带有通道的银行代码,导致组件上的Java崩溃,阻止按钮运行。我发现这是用Selenium IDE尝试我的测试。现在它的工作。
从整个问题中吸取的教训是,如果您只是调整测试,页面上的每个组件都会相互干扰,并且您的按钮可以正常工作。