gpt4 book ai didi

javascript - React - Selenium 测试

转载 作者:行者123 更新时间:2023-12-03 07:35:28 25 4
gpt4 key购买 nike

已解决,请参阅下面的答案

我用 selenium 测试了一个 React 应用程序。

我需要更改输入字段的值,该值链接到对象的状态。简而言之(代码的相关部分),此输入的更改允许仅当它不为空时才提交它的值:

# react object

render: function(){

<input ... onChange={this.handleTextChange} className="myInput" />

<button onClick={this.handleSubmit}>Submit</button>
},

handleTextChange: function(e) {
this.setState({text: e.target.value});
},

handleSubmit: function() {
if(this.state.text.length > 0) {
// relevant code that is never executed
// because although we change the value of the input, the state does not update
}
},

代码可以工作,但我找不到测试它的方法,因为我找不到任何可以更新输入并反射(reflect)对象状态的 js 操作。我尝试了以下解决方案

# value update
self.selenium.execute_script("var input = document.querySelectorAll('input.myInput')[0]; form.value = 'New message!'");

“新消息!”这个词实际上出现在输入中但不更新对象的状态。然后我尝试专注于输入并触发 keyup 事件,但没有成功

# try focus and keyUp
# source https://stackoverflow.com/questions/596481/simulate-javascript-key-events
self.selenium.execute_script("""
var form = document.querySelectorAll("input.messageFormInput")[0];
form.focus();
var keyboardEvent = document.createEvent("KeyboardEvent");
var initMethod = typeof keyboardEvent.initKeyboardEvent !== 'undefined' ? "initKeyboardEvent" : "initKeyEvent";
keyboardEvent[initMethod](
"keydown", // event type : keydown, keyup, keypress
true, // bubbles
true, // cancelable
window, // viewArg: should be window
false, // ctrlKeyArg
false, // altKeyArg
false, // shiftKeyArg
false, // metaKeyArg
40, // keyCodeArg : unsigned long the virtual key code, else 0
0 // charCodeArgs : unsigned long the Unicode character associated with the depressed key, else 0
);
document.dispatchEvent(keyboardEvent);
""")

我尝试了与此处解释的 jQuery 相同的解决方案 ( Is it possible to simulate key press events programmatically? ),但它也不起作用。

任何想法都非常受欢迎。谢谢!

最佳答案

我错了,我没有意识到

self.selenium.find_elements_by_class_name('myClass')[0].send_keys("hello")

这实际上解决了问题。感谢克里斯·霍克斯为我指明了正确的方向。

关于javascript - React - Selenium 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35629104/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com