Я бы сделал что-то вроде этого, чтобы получить сильную типизированную ситуацию во время выполнения.
void Main()
{
var keyType = typeof(string);
var valueType = typeof(int);
var method = this.GetType()
.GetMethod("RunMyGenericCode", BindingFlags.InvokeMethod | BindingFlags.NonPublic | BindingFlags.Instance)
.MakeGenericMethod(keyType, valueType);
method.Invoke(this, new [] { new DB() });
}
private void RunMyGenericCode<Key, Value>(DB db)
{
DBEnumerator<Key, Value> e = db.GetAsyncEnumerator<Key, Value>();
/* Now I'm strongly-typed */
}
Вот и мы. Панель поиска должна была переключаться нажатием кнопки.
... # 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!")