2016-07-27 961 views
3

我试图在http://www.overstock.com的登录页面上获取xpath为xpath =“.//*[@id ='msgIdmmrka']”的标签的值。但是,当我输入任何电子邮件,有效密码并单击“登录”按钮后,此Web元素将在几秒后从DOM中删除。如何处理使用Selenium Webdriver从DOM中删除的Web元素?

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

我得到试图找到这个网页元素

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']} 

回答

1

等待消息元素可见提交表单后,当下面的异常错误消息:

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

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

+0

我仍然得到相同的异常。 –

+0

@SrinivasanRamu除非在代码中仍然有'findElement()'调用,否则无法获得相同的异常。 – alecxe

+0

@alexce我将代码更新为WebDriverWait wait = new WebDriverWait(browser,10); \t \t wait.until(ExpectedConditions.visibilityOfElementLocated(By.id(“msgIdmmrka”)));现在我收到一条消息:“10秒钟后超时等待By.id:msgIdmmrka” –