我尝试使用其他xpath等,但是无法在应用程序中单击“继续”按钮。以下是处理相同问题的一种尝试:-
WebDriverWait wait2 = new WebDriverWait(driver,20);
WebElement continueBtn = wait2.until(ExpectedConditions.elementToBeClickable(By.xpath("//*[@type = 'submit' and @class = 'btn btn--primary']")));
当我检查元素时,我发现其中的以下细节:-
<button class="btn btn--primary" type="submit" data-bind="enable: !processing() && !$root.accountLocked()">
<svg xmlns="http://www.w3.org/2000/svg" class="icon shape--loader" style="display: none;" viewBox="0 0 16 16" focusable="false" data-bind="visible: processing()">
<title>Processing</title>
<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#shape--loader" />
</svg>
Continue
</button>
引发的错误如下:- 线程“主”中的异常org.openqa.selenium.TimeoutException:等待元素等待20秒后超时:By.xpath:// * [@ type ='submit'and @ class ='btn btn--primary ']
但是对象/元素已经加载,所以不确定为什么不能单击元素。
我也尝试过JavaScript执行器,但无济于事。
请帮助我解决该问题。在此先感谢!!!
答案 0 :(得分:0)
请放心,上面给出的XPath是否唯一? 如果是,您是否尝试过JSExecutor?
尝试以下代码:
WebElement element = driver.findElement(By.xpath("//*[@type = 'submit' and @class = 'btn btn--primary']")));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", element);
答案 1 :(得分:0)
如果很难找到具有属性的元素,则根据按钮名称进行查找。如果在类似这样的页面中只有一个“继续”按钮。
WebElement continueBtn = wait2.until(ExpectedConditions.elementToBeClickable(By.xpath("//button[contains(text(),'Continue')]")));
答案 2 :(得分:0)
最后我找到了解决方案。在找到解决方案之前,我尝试了明确的等待,我自己粘贴了有问题的代码,然后尝试使用JavaScript执行程序,但它也没有用。以下是解决方案:-
Actions action = new Actions(driver);
action.sendKeys(Keys.ENTER).build().perform();
它确实运行良好。谢谢大家的贡献和时间。