I would like to allow user input and make some decisions based on it. If I do this:
driver.execute_script("prompt('Enter smth','smth')")
I get a good hint, but I cannot use this value. Is there a way to show the user an input field and use the value entered there?
EDIT: This is my scenario:
from selenium.webdriver import 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
And this comes out with the following exception:
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
What am I doing wrong?
EDIT: I tried to do as prestomanifesto suggested, here is the conclusion:
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
source share