我们有两个不同的页面与提交按钮在每个。在一个页面上,提交按钮,注册单击并测试继续。在第二页中,您可以看到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>
我宣布这两种情况相似。工作按钮:
@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)、脚本或操作更改.sendKeys()。基本上,我试过了我能找到的一切。我还更改了按钮的访问方式(CSS、ID、不同的Xpath方法)。但是,当您观察运行测试时,可以清楚地看到Selenium单击了按钮。按钮之前正在使用Selenium,但是它已经停止了。
我们正在使用Selenium 2.47.1和最新的ChromeDriver。按钮正在工作时,您单击它手动。谢谢你的帮助。
注意:问题与按钮本身更相关,而不是Selenium。如果你给我们提示如何修理按钮工作,我们将感激。
发布于 2016-09-23 03:49:17
解决整个问题的关键在于上面的“银行代码”组件。这个组件包含自动填充,它将显示可能的结果表(不同的银行代码和用于交易的渠道)。
整个问题在我发送给这个组件的代码中,我用通道发送银行代码,这导致了组件上的Java中断,防止了按钮的功能。我发现这是在用Selenium IDE进行测试时发现的。现在起作用了。
因此,从整个问题中吸取的教训是,页面上的每个组件都可以互相干扰,只要调整测试,按钮就可以工作。
https://stackoverflow.com/questions/39633444
复制相似问题