Вот и мы. Панель поиска должна была переключаться нажатием кнопки.
... # Driver initialization, navigating to the page etc.
# The first nested frame
frame_1 = driver.find_element_by_id("widget-container")
driver.switch_to.frame(frame_1)
# The second nested frame
frame_2 = driver.find_element_by_tag_name("iframe")
driver.switch_to.frame(frame_2)
# Toggling the search bar
driver.find_element_by_xpath("//div[contains(text(), 'Instrument')]").click()
# Actually sending in the query
search = driver.find_element_by_xpath("//input[@placeholder='Instrument']")
search.send_keys("Hey there!")
Вы могли разделить их с shlex.split (), который может обработать заключенные в кавычки значения, которые Вы имеете и довольно легко анализируете это с очень простым регулярным выражением. Или, можно просто использовать регулярные выражения и для разделения и для парсинга. Или просто используйте разделение ().
args = {}
for arg in shlex.split(cmdln_args):
key, value = arg.split('=', 1)
args[key] = value
Попытайтесь следовать "Стандартам для Интерфейсов командной строки"
Преобразуйте свои аргументы (как предложенный Thomas) к формату OptionParser.
parser.parse_args(["--"+p if "=" in p else p for p in sys.argv[1:]])
Если параметры командной строки не находятся в sys.argv или подобном списке, а в строке затем (как ironfroggy предложены) использование shlex.split()
.
parser.parse_args(["--"+p if "=" in p else p for p in shlex.split(argsline)])
Без довольно интенсивной хирургии на optparse или getopt, я не полагаю, что можно разумно заставить их проанализировать формат. Можно легко проанализировать собственный формат, тем не менее, или перевести его во что-то, что optparse мог обработать:
parser = optparse.OptionParser()
parser.add_option("--ARG1", dest="arg1", help="....")
parser.add_option(...)
...
newargs = sys.argv[:1]
for idx, arg in enumerate(sys.argv[1:])
parts = arg.split('=', 1)
if len(parts) < 2:
# End of options, don't translate the rest.
newargs.extend(sys.argv[idx+1:])
break
argname, argvalue = parts
newargs.extend(["--%s" % argname, argvalue])
parser.parse_args(newargs)
Маленькая pythonic вариация на ответ shlex Ironforggy:
args = dict( arg.split('=', 1) for arg in shlex.split(cmdln_args) )
ой... - исправленный.
спасибо, J.F. Sebastian (добрался для запоминания тех выражений генератора отдельного аргумента).
А как насчет optmatch ( http://www.coderazzi.net/python/optmatch/index. htm )? Не является стандартным, но использует другой подход к синтаксическому анализу параметров и поддерживает любой префикс:
OptionMatcher.setMode (optionPrefix = '-')
Немного поздно на вечеринку ... но PEP 389 позволяет это и многое другое.
Вот небольшая хорошая библиотека, если она понадобится вашей версии Python code.google.com/p/argparse
Наслаждайтесь.