Tôi muốn cho phép người dùng nhập và đưa ra một số quyết định dựa trên nó. Nếu tôi làm điều này:Làm thế nào tôi có thể nhắc nhập bằng Selenium/Webdriver và sử dụng kết quả?
driver.execute_script("prompt('Enter smth','smth')")
Tôi nhận được lời nhắc tốt, nhưng tôi không thể sử dụng giá trị của nó. Có cách nào hiển thị hộp nhập liệu cho người dùng không và sử dụng giá trị được nhập ở đó?
EDIT: Đây là kịch bản của tôi:
từ selenium.webdriver nhập khẩu Firefox
if __name__ == "__main__":
driver = Firefox()
driver.execute_script("window.promptResponse=prompt('Enter smth','smth')")
a = driver.execute_script("var win = this.browserbot.getUserWindow(); return win.promptResponse")
print "got back %s" % a
Và điều này thoát với ngoại lệ sau đây:
a = driver.execute_script("var win = this.browserbot.getUserWindow(); return win.promptResponse")
File "c:\python26\lib\site-packages\selenium-2.12.1-py2.6.egg\selenium\webdriver\remote\webdriver.py", line 385, in ex
ecute_script
{'script': script, 'args':converted_args})['value']
File "c:\python26\lib\site-packages\selenium-2.12.1-py2.6.egg\selenium\webdriver\remote\webdriver.py", line 153, in ex
ecute
self.error_handler.check_response(response)
File "c:\python26\lib\site-packages\selenium-2.12.1-py2.6.egg\selenium\webdriver\remote\errorhandler.py", line 110, in
check_response
if 'message' in value:
TypeError: argument of type 'NoneType' is not iterable
gì tôi không làm đúng không?
EDIT: Tôi đã cố gắng để làm như prestomanifesto gợi ý, đây là kết quả:
In [1]: from selenium.webdriver import Firefox
In [2]: f = Firefox()
In [3]: a = f.ex
f.execute f.execute_async_script f.execute_script
In [3]: a = f.execute_script("return prompt('Enter smth','smth')")
In [4]: a
Out[4]: {u'text': u'Enter smth'}
In [5]: a
Out[5]: {u'text': u'Enter smth'}
In [6]: class(a)
File "<ipython-input-6-2d2ff4f61612>", line 1
class(a)
^
SyntaxError: invalid syntax
In [7]: type(a)
Out[7]: dict
tôi cập nhật câu hỏi của tôi với kết quả chạy mã của bạn. Bạn có thể nhận ra những gì tôi không làm đúng không? – Geo