我们有两个不同的页面,每个页面上都有提交按钮。在一个页面上提交按钮注册点击并继续测试。在第二个页面上,您可以看到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>
我类似地声明两个webelelement。工作按钮:
@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();
}
我尝试改变.click()与。sendkeys (Keys.ENTER),脚本或动作。基本上,我尝试了我能找到的所有方法。我还改变了访问按钮的方式(CSS、ID、不同的Xpath方法)。没有任何工作,但是当您观察运行测试时,您可以清楚地看到,Selenium单击了按钮。按钮与硒工作了一段时间以前,但它停止了。
我们正在使用Selenium 2.47.1和最新的ChromeDriver。按钮是工作时,您手动点击它。谢谢你的帮助。
注意:问题更多地与按钮本身有关,而不是Selenium。如果你给我们提示如何修理按钮的工作,我们将不胜感激。
整个问题的解决方案在于上面的"Bank Code"组件。该组件包含自动填充器,它将显示具有可能结果的表(用于事务的不同银行代码和通道)。
整个问题是在我发送给这个组件的代码中,我发送了带有通道的银行代码,这导致组件上的Java中断,阻止了按钮的功能。我发现这是在使用Selenium IDE进行测试时发现的。现在它起作用了。
所以从这个问题中得到的教训是,页面上的每个组件可以相互干扰,如果你只是调整你的测试,你的按钮可以工作。