javascript - 无法在 grails 应用程序中使用 selenium 检索文本框文本

标签 javascript selenium grails ecmascript-6

我目前正在尝试为我公司的 grails 应用程序进行自动化测试。我在 javascript 中使用 Selenium 。问题是我需要检查是否生成了带有值的表单,但是每当我尝试检查该值时,它都会给我一个很长的错误。这是应该工作的代码:

console.log(
    driver.findElement(
        By.xpath("//*[@id='manual-order-mail-from-name']")
    ).getAttribute("value")
);

我想要得到的元素在这里:
<input 
    type="text" 
    class="form-control input-sm mail-from-input valid" 
    name="mailFromName" 
    id="manual-order-mail-from-name" 
    placeholder="Name" 
    required="" 
    aria-required="true" 
    aria-invalid="false">

这是错误消息:
ManagedPromise {
  flow_: 
   ControlFlow {
     propagateUnhandledRejections_: true,
     activeQueue_: 
      TaskQueue {
        name_: 'TaskQueue::709',
        flow_: [Circular],
        tasks_: [Object],
        interrupts_: null,
        pending_: null,
        subQ_: null,
        state_: 'new',
        unhandledRejections_: Set {} },
     taskQueues_: Set { [Object] },
     shutdownTask_: null,
     hold_: 
      Timeout {
        _called: false,
        _idleTimeout: 2147483647,
        _idlePrev: [Object],
        _idleNext: [Object],
        _idleStart: 461,
        _onTimeout: [Function],
        _timerArgs: undefined,
        _repeat: 2147483647 } },
  stack_: 
   { Task: WebElement.getAttribute(value)
       at thenableWebDriverProxy.schedule (/Users/takeshi/WebstormProjects/Regression/node_modules/selenium-webdriver/lib/webdriver.js:816:17)
       at WebElementPromise.schedule_ (/Users/takeshi/WebstormProjects/Regression/node_modules/selenium-webdriver/lib/webdriver.js:1921:25)
       at WebElementPromise.getAttribute (/Users/takeshi/WebstormProjects/Regression/node_modules/selenium-webdriver/lib/webdriver.js:2171:17)
       at /Users/takeshi/WebstormProjects/Regression/TEST-11.js:43:92
       at ManagedPromise.invokeCallback_ (/Users/takeshi/WebstormProjects/Regression/node_modules/selenium-webdriver/lib/promise.js:1384:14)
       at TaskQueue.execute_ (/Users/takeshi/WebstormProjects/Regression/node_modules/selenium-webdriver/lib/promise.js:3092:14)
       at TaskQueue.executeNext_ (/Users/takeshi/WebstormProjects/Regression/node_modules/selenium-webdriver/lib/promise.js:3075:27)
       at asyncRun (/Users/takeshi/WebstormProjects/Regression/node_modules/selenium-webdriver/lib/promise.js:2935:27)
       at /Users/takeshi/WebstormProjects/Regression/node_modules/selenium-webdriver/lib/promise.js:676:7
       at process._tickCallback (internal/process/next_tick.js:103:7) name: 'Task' },
  parent_: null,
  callbacks_: null,
  state_: 'pending',
  handled_: false,
  value_: undefined,
  queue_: null }

它是用户单击按钮时出现的模式的一部分。我的猜测是这与它有关,但我不知道。

我到处搜索,似乎找不到解决方案。如果您对此有任何见解,请告诉我。

最佳答案

原来我对 getAttribute 返回的内容有错误的理解。它实际上返回一个 promise ,然后您需要捕获然后输出。像这样:
driver.findElement(By.xpath("//*[@id='manual-order-mail-from-name']")).getAttribute("value").then(function (success) {console.log("this is the text" + success);}, function(e) {console.log("this was the error" + e);});

关于javascript - 无法在 grails 应用程序中使用 selenium 检索文本框文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43483312/

相关文章:

javascript - 切换两侧按钮 css

python Selenium 白页

grails - 使用wschat/Web Socket Chat插件的Grails 3.0

grails - Grails更改Web应用程序静态目录

java - 使用 XMLslurper 获取内部数据

javascript - 将 getter 和 setter 与 Object.defineProperty 一起使用

javascript - 在 javascript (jQuery) 中重置变量

javascript - 从 google map api v3 中删除路线

java - 如何使用 Java 计算 Selenium WebDriver 中选择下拉框中的选项数?

java - 为什么我的代码不能正常工作?