gpt4 book ai didi

java - 如何等待元素在 angular.js 应用程序中可见?

转载 作者:行者123 更新时间:2023-11-30 10:29:11 25 4
gpt4 key购买 nike

我觉得这似乎是一个很老的问题。但实际上不适合我。

我的应用程序基于 Angular。登录应用程序时Loader 出现时,Selenium 测试失败并抛出下面提到的错误异常。

 unknown error: Element <a id="user_dropdown" href="javascript:void(0);" class="dropdown-toggle" data-toggle="dropdown">...</a> is not clickable at point (1421, 33). Other element would receive the click: <md-backdrop ng-show="showMainSpinner" class="m-backdrop" aria-hidden="false">...</md-backdrop>
(Session info: chrome=58.0.3029.110)
(Driver info: chromedriver=2.28.455520
(cc17746adff54984afff480136733114c6b3704b),platform=Windows NT 10.0.14393
x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 56 milliseconds
Build info: version: '2.45.0', revision:
'5017cb8e7ca8e37638dc3091b2440b90a1d8686f', time: '2015-02-27 09:10:26'
[Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities \[{applicationCacheEnabled=false, rotatable=false,
mobileEmulationEn][1]abled=false, networkConnectionEnabled=false, chrome=
{chromedriverVersion=2.28.455520
(cc17746adff54984afff480136733114c6b3704b),
userDataDir=C:\Users\smistry\AppData\Local\Temp\scoped_dir56852_17781},
takesHeapSnapshot=true, pageLoadStrategy=normal, databaseEnabled=false,
handlesAlerts=true, hasTouchScreen=false, version=58.0.3029.110,
platform=XP, browserConnectionEnabled=false, nativeEvents=true,
acceptSslCerts=true, locationContextEnabled=true, webStorageEnabled=true,
browserName=chrome, takesScreenshot=true, javascriptEnabled=true,
cssSelectorsEnabled=true, unexpectedAlertBehaviour=}]
Session ID: 41ebcec742d22c760f65efb4bb06b7db

到目前为止我为实现这一目标所做的事情:

1) 使用隐式等待

2)使用显式等待(WaitForElementPresent/WaitForVisible/elementToBeClickable/等待元素的不可见性等)(所有可能的尝试)

3) Java 脚本的使用 (window.angular.element('body').injector().get('$http').pendingRequests.length === 0)

typeof jQuery != 'undefined'

文档.readystate

typeof angular != 'undefined')

4) 尝试了所有可能的方法来捕获元素 (Loader) 并等待它消失。根本没用。

5) 使用 Thread.sleep(但我不想使用它)

下面是我网站的 Spinner 元素的代码:

<md-progress-circular md-mode="indeterminate" md-diameter="70" class="m-spinner md-raised md-hue-2 md-mode-indeterminate" aria-valuemin="0" aria-valuemax="100" role="progressbar" style="width: 70px; height: 70px;"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 70 70" style="width: 70px; height: 70px; transform-origin: 35px 35px 35px;"><path fill="none" style="stroke-width: 7px;" d="M21.583326164121,6.500125207614687A31.5,31.5 0 0,1 49.405589517818534,63.01301466540359"></path></svg></md-progress-circular>

我正在使用 Selenium webdriver、chrome 58、eclipse neon.2、windows 10。

自从过去这么多天以来,真的很努力地为它找到解决方案。我希望你明白我的问题。如果缺少任何内容,我可以提供详细信息。非常感谢您的帮助。

最佳答案

经过几周的努力,我终于找到了解决问题的方法。

感谢大家的支持和帮助,我在下面发布对我有用的答案。

之前这么多次,我都是分别试过的。但这次我把它们放在一起试过了,效果很好。

我已经使用显式等待和等待加载元素从页面和主页图标的可见性中不可见。

谢谢。

    WebDriverWait wait = new WebDriverWait(webDriver, 10);
wait.until(ExpectedConditions.presenceOfElementLocated(By.id("elementOfHomePage")));
wait.until(ExpectedConditions.invisibilityOfElementLocated(By.cssSelector("loaderElement")));

关于java - 如何等待元素在 angular.js 应用程序中可见?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44168525/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com