【问题标题】:How to determine Material-UI toggle ON/OFF state from DOM?如何从 DOM 确定 Material-UI 切换 ON/OFF 状态?
【发布时间】:2016-06-06 17:04:20
【问题描述】:

检查http://www.material-ui.com/#/components/toggle 上的切换,DOM 中有一个“复选框”类型的输入标签。 “默认切换”具有“已检查”属性,但是当我将其设置为“关闭”状态时,“输入”标签中的属性不会改变,“已检查”仍然存在。 如何从 DOM 确定切换 ON/OFF 状态?

附言 我正在使用 Selenium Web 驱动程序编写自动化功能测试。

【问题讨论】:

    标签: toggle material-ui


    【解决方案1】:

    如果您可以为每个 toggle 分配自定义 data-* 属性,请尝试以下操作:

    handleToggle = (event) => {
      // here's your checked Value
      event.target.getAttribute('data-isToggled') 
    }
    
    // ...React boilerplate
    
    <Toggle
      label="Toggled by default"
      onToggle={this.handleToggle}
      data-isToggled={this.state.Toggled}
      toggled={this.state.Toggled}
    />
    

    【讨论】:

    • 救了我的命!谢谢你:)
    【解决方案2】:

    您不会直接从 DOM 检查切换状态。您必须使用 javascript 回调来确定切换开关是打开还是关闭。

    类切换组件示例

          export default class ToggleComponent extends React.Component {
    
          constructor(props) {
            super(props);
            this.state = {Toggled: true};
          }
    
          handleToggle() {
            this.setState({Toggled: !this.state.Toggled});
            console.log(this.state.Toggled)
          }
    
          render() {
            return (
              <div>
                <Toggle
                    label="Toggled by default"
                    defaultToggled={this.state.Toggled}
                    onToggle={this.handleToggle.bind(this)}
                    toggle={this.state.Toggled}
                  />
    
              </div>
            );
          }
        }
    

    看:https://facebook.github.io/react/docs/interactivity-and-dynamic-uis.html

    【讨论】:

    • 我正在使用 Selenium Web 驱动程序编写自动化功能测试,但我无法访问 React 组件,因此我需要从 DOM 确定切换状态。
    • 为什么选择硒? React 在虚拟 DOM 上工作,您可以使用 Jest 来测试组件。无论如何,请检查此答案:How do you test a ReactJS Web App with Selenium
    • 这并没有为问题提供真正的答案。
    • 这也不是一个适当的回调,应该是 this.setState({toggled: !this.state.Toggled}, ()=>console.log(this.state.Toggled))跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-16
    • 2015-04-20
    • 1970-01-01
    • 2021-04-10
    • 2017-02-08
    • 1970-01-01
    • 2023-01-27
    相关资源
    最近更新 更多