使用Selenium和Java无法单击按钮。它在html中具有“ style = display:none”,这会引起问题

时间:2018-10-29 09:52:00

标签: java selenium selenium-webdriver automation

我尝试使用其他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() &amp;&amp; !$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执行器,但无济于事。

请帮助我解决该问题。在此先感谢!!!

3 个答案:

答案 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();

它确实运行良好。谢谢大家的贡献和时间。