小编Mar*_*aru的帖子

Chromdriver2.21.2失败"没有这样的会话"

我试图为我的网页进行自动化测试,我正在使用Jasmine与selenium一起使用.

当测试chrome(使用chromedriver)时,我不可预测地得到下面的错误.它经常发生,当我运行测试套件时,它几乎没有完成.

我发现了这个错误的证据,但无法找到一个可靠的答案:https://bugs.chromium.org/p/chromedriver/issues/detail?id = 732(授予这是铬,我使用铬)

WebDriverError: no such session
  (Driver info: chromedriver=2.21.371459 (36d3d07f660ff2bc1bf28a75d1cdabed0983e7c4),platform=Mac OS X 10.11.5 x86_64)
    at WebDriverError (/Users/XXXXXXX/Documents/sweetmeeting/node_modules/selenium-webdriver/lib/error.js:27:10)
    at Object.checkLegacyResponse (/Users/XXXXXXX/Documents/sweetmeeting/node_modules/selenium-webdriver/lib/error.js:639:15)
    at parseHttpResponse (/Users/XXXXXXX/Documents/sweetmeeting/node_modules/selenium-webdriver/http/index.js:538:13)
    at /Users/XXXXXXX/Documents/sweetmeeting/node_modules/selenium-webdriver/http/index.js:472:11
    at ManagedPromise.invokeCallback_ (/Users/XXXXXXX/Documents/sweetmeeting/node_modules/selenium-webdriver/lib/promise.js:1379:14)
    at TaskQueue.execute_ (/Users/XXXXXXX/Documents/sweetmeeting/node_modules/selenium-webdriver/lib/promise.js:2913:14)
    at TaskQueue.executeNext_ (/Users/XXXXXXX/Documents/sweetmeeting/node_modules/selenium-webdriver/lib/promise.js:2896:21)
    at /Users/XXXXXXX/Documents/sweetmeeting/node_modules/selenium-webdriver/lib/promise.js:2820:25
    at /Users/XXXXXXX/Documents/sweetmeeting/node_modules/selenium-webdriver/lib/promise.js:639:7
    at process._tickCallback (node.js:369:9)
From: Task: WebElement.isDisplayed()
    at Driver.schedule (/Users/XXXXXXX/Documents/sweetmeeting/node_modules/selenium-webdriver/lib/webdriver.js:377:17)
    at WebElement.schedule_ (/Users/XXXXXXX/Documents/sweetmeeting/node_modules/selenium-webdriver/lib/webdriver.js:1744:25)
    at WebElement.isDisplayed (/Users/XXXXXXX/Documents/sweetmeeting/node_modules/selenium-webdriver/lib/webdriver.js:2110:17)
    at driver.findElements.then.error (/Users/XXXXXXX/Documents/sweetmeeting/Test/front_end_testing/spec/dashboard_tester.js:251:34)
    at ManagedPromise.invokeCallback_ (/Users/XXXXXXX/Documents/sweetmeeting/node_modules/selenium-webdriver/lib/promise.js:1379:14)
    at TaskQueue.execute_ (/Users/XXXXXXX/Documents/sweetmeeting/node_modules/selenium-webdriver/lib/promise.js:2913:14)
    at TaskQueue.executeNext_ (/Users/XXXXXXX/Documents/sweetmeeting/node_modules/selenium-webdriver/lib/promise.js:2896:21)
    at /Users/XXXXXXX/Documents/sweetmeeting/node_modules/selenium-webdriver/lib/promise.js:2775:27
    at /Users/XXXXXXX/Documents/sweetmeeting/node_modules/selenium-webdriver/lib/promise.js:639:7
    at process._tickCallback (node.js:369:9)
Run Code Online (Sandbox Code Playgroud)

selenium google-chrome jasmine selenium-chromedriver

5
推荐指数
2
解决办法
6166
查看次数

有没有办法在不查询/减少查询的情况下了解数据库更新?

我遇到了一个奇怪的问题,寻找可以到达的最佳解决方案.我正在开发一个rails应用程序,它显示来自另一个应用程序(nodejs)正在使用的公共数据库的数据.所有CRUD操作都发生在另一个平台上.在rails应用程序中,我们只查询并显示数据.

在rails应用程序中,我需要自动更新视图而不刷新.例如

def index
    @states = State.page(params[:state_page])
    @level_one_companies = Company.includes(:state)
                                  .where(level: 1)
                                  .order('created_at DESC').limit(20)

    @level_two_companies = Company.includes(:state)
                                  .where(level: 2)
                                  .order('created_at DESC').limit(20)
end
Run Code Online (Sandbox Code Playgroud)

在索引页面上,我将拥有每个表的表格,当新数据添加到州(或)级别1(或)级别2公司时,我需要刷新表格.

我知道我可以通过两种方式自动更新视图,即

  1. 行动电缆.
  2. 使用Jquery以一定的时间间隔进行数据池化.

通常在使用Action Cable时,我们将在db中创建记录后从服务器广播数据(在创建操作(或)after_save回调模型之后的.save之后).但是,我没有通过rails app创建任何记录.

我的第一个问题是,在这种情况下有没有办法使用动作电缆?

所以我选择了第二个选项,它运行正常.但它每隔X秒就会进行过多的db调用.有没有办法减少查询以更新视图?我能和这里一起去的最佳方式是什么?任何帮助高度赞赏.谢谢.

postgresql ajax ruby-on-rails ruby-on-rails-5 actioncable

5
推荐指数
1
解决办法
234
查看次数

react props 在构造函数中未定义并存在于渲染中

我正在尝试创建一个受控文本区域。

class TextArea extends React.Component {
  constructor(props) {
    super(props);
    this.state= {
        text: this.props.initial
    };
    this.handleChange = this.handleChange.bind(this);
  }

handleChange(event) {
    //some handle
}

render() {
    return (
        <textarea
          value={this.state.text}
          placeholder={this.props.initial}
          onChange={this.handleChange}
        />
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

出于某种原因,如果我this.props.initial在构造函数中console.log ,我会得到一个未定义的。

但占位符有效。

我想要做的是抛弃占位符并设置一个初始值,用户可以编辑和复制并与之交互。(基本上是普通文本而不是占位符,但我不能这样做,因为它不起作用)

我究竟做错了什么?

编辑:我传递props.initial给 textarea 的方式:

<TextArea
  initial={this.state.json.initial}
  text={this.state.json.text}
  changeHandler={this.handleChange}
/>
Run Code Online (Sandbox Code Playgroud)

我从 $.getJSON 调用中获取 json 并且我认为 textarea 在 json 调用完成之前被呈现。有没有什么办法可以只在 componentWillMount 函数之后运行渲染函数?

javascript reactjs

5
推荐指数
1
解决办法
3268
查看次数