【问题标题】:How to handle a web element getting removed from DOM using Selenium Webdriver?如何使用 Selenium Webdriver 处理从 DOM 中删除的 Web 元素?
【发布时间】:2016-12-01 19:21:14
【问题描述】:

我正在尝试在http://www.overstock.com 的登录页面上获取 xpath 为 xpath=".//*[@id='msgIdmmrka']" 的标签的值。但是,当我没有输入任何电子邮件、有效密码并单击“登录”按钮时,该网络元素会在几秒钟后从 DOM 中删除。

我是 Selenium Webdriver 的新手,所以想不出如何处理这种情况的解决方案?你能帮我解决这个问题吗?

我在尝试查找此 Web 元素时收到以下异常错误消息

Unable to locate element: {"method":"xpath","selector":".//*[@id='msgIdmmrka']"}
Command duration or timeout: 30.19 seconds
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
Build info: version: '2.53.1', revision: 'a36b8b1cd5757287168e54b817830adce9b0158d', time: '2016-06-30 19:26:09'
System info: host: 'Srinivasans-MacBook-Pro.local', ip: '192.168.0.101', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.10.5', java.version: '1.8.0_101'
Driver info: org.openqa.selenium.firefox.FirefoxDriver
Capabilities [{applicationCacheEnabled=true, rotatable=false, handlesAlerts=true, databaseEnabled=true, version=43.0.3, platform=MAC, nativeEvents=false, acceptSslCerts=true, webStorageEnabled=true, locationContextEnabled=true, browserName=firefox, takesScreenshot=true, javascriptEnabled=true, cssSelectorsEnabled=true}]
Session ID: 724463ca-6ab8-f246-acb4-6c8d955e066c
*** Element info: {Using=xpath, value=.//*[@id='msgIdmmrka']}

【问题讨论】:

    标签: javascript java selenium xpath


    【解决方案1】:

    提交表单后等待消息元素可见

    WebDriverWait wait = new WebDriverWait(driver, timeOut);
    WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector(".page-errors .message")));
    

    .page-errors .message CSS 选择器将匹配错误消息。

    【讨论】:

    • 我仍然遇到同样的异常。
    • @SrinivasanRamu 除非您在代码中仍有 findElement() 调用,否则您无法获得相同的异常。
    • @alexce 我将代码更新为 WebDriverWait wait = new WebDriverWait(browser, 10); wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("msgIdmmrka")));现在我收到一条消息“等待 By.id 定位的元素可见性 10 秒后超时:msgIdmmrka”
    • @SrinivasanRamu 好的,但你为什么要等待一个带有 id 的元素而不是使用我建议的选择器?
    猜你喜欢
    • 2020-01-30
    • 2016-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-27
    • 2016-07-08
    • 2019-11-13
    相关资源
    最近更新 更多