Мы можем объединить / объединить все данные внутри одной коллекции с простой функцией в нескольких строках с помощью клиентской консоли mongodb, и теперь мы сможем выполнить требуемый запрос. Ниже полный пример:
.- Авторы:
db.authors.insert([
{
_id: 'a1',
name: { first: 'orlando', last: 'becerra' },
age: 27
},
{
_id: 'a2',
name: { first: 'mayra', last: 'sanchez' },
age: 21
}
]);
.- Категории:
db.categories.insert([
{
_id: 'c1',
name: 'sci-fi'
},
{
_id: 'c2',
name: 'romance'
}
]);
.- Книги
db.books.insert([
{
_id: 'b1',
name: 'Groovy Book',
category: 'c1',
authors: ['a1']
},
{
_id: 'b2',
name: 'Java Book',
category: 'c2',
authors: ['a1','a2']
},
]);
.- Книжное кредитование
db.lendings.insert([
{
_id: 'l1',
book: 'b1',
date: new Date('01/01/11'),
lendingBy: 'jose'
},
{
_id: 'l2',
book: 'b1',
date: new Date('02/02/12'),
lendingBy: 'maria'
}
]);
.- Магия:
db.books.find().forEach(
function (newBook) {
newBook.category = db.categories.findOne( { "_id": newBook.category } );
newBook.lendings = db.lendings.find( { "book": newBook._id } ).toArray();
newBook.authors = db.authors.find( { "_id": { $in: newBook.authors } } ).toArray();
db.booksReloaded.insert(newBook);
}
);
.- Получить новые данные коллекции:
db.booksReloaded.find().pretty()
.- Ответ:)
{
"_id" : "b1",
"name" : "Groovy Book",
"category" : {
"_id" : "c1",
"name" : "sci-fi"
},
"authors" : [
{
"_id" : "a1",
"name" : {
"first" : "orlando",
"last" : "becerra"
},
"age" : 27
}
],
"lendings" : [
{
"_id" : "l1",
"book" : "b1",
"date" : ISODate("2011-01-01T00:00:00Z"),
"lendingBy" : "jose"
},
{
"_id" : "l2",
"book" : "b1",
"date" : ISODate("2012-02-02T00:00:00Z"),
"lendingBy" : "maria"
}
]
}
{
"_id" : "b2",
"name" : "Java Book",
"category" : {
"_id" : "c2",
"name" : "romance"
},
"authors" : [
{
"_id" : "a1",
"name" : {
"first" : "orlando",
"last" : "becerra"
},
"age" : 27
},
{
"_id" : "a2",
"name" : {
"first" : "mayra",
"last" : "sanchez"
},
"age" : 21
}
],
"lendings" : [ ]
}
Надеюсь, эти строки помогут вам.
Попробуйте использовать класс Actions
, чтобы сначала сосредоточиться на элементе, прежде чем использовать sendkeys()
, как показано ниже:
Actions actions = new Actions(driver);
actions.moveToElement(driver.findElement(By.name("userId")));
actions.click();
actions.sendKeys("sysadmin");
actions.build().perform();
Столкнулся с аналогичной проблемой. Вы используете устаревшую версию chromedriver. Обновите chromedriver до последней версии и установите свойство webdriver соответствующим образом.
WebDriver browser = new ChromeDriver();
String path_to_driver = "C:\\blah\\blah\\chromedriver.exe"
System.setProperty("webdriver.chrome.driver", path_to_driver);
Далее вам нужно будет обновить библиотеку селена до последней версии Selenium, что приведет к проблемам обратной несовместимости с Chromedriver.
blockquote>
- Последняя версия Selenium - 3.141.59
- Последняя версия Chromedriver: 73.0.3683.20 [115 ]
Ссылка для скачивания ChromeDriver: Загрузить драйвер Chrome
Ссылка для скачивания Selenium: Загрузить Selenium [1111 ]
Примечание:
Обязательно подождите некоторое время после перехода к нужному URL-адресу. Причина в том, что элементы заполняются в HTML DOM через определенный промежуток времени. В случае, если веб-драйвер проходит через DOM в течение этого времени, driver.findElement () не сможет получить веб-элемент.
blockquote>webdriver.get(url); WebDriverWait wait_time = new WebDriverWait(webdriver, 10);
Это сообщение об ошибке ...
Exception in thread "main" org.openqa.selenium.WebDriverException: unknown error: cannot focus element
(Session info: chrome=61.0.3163.100)
(Driver info: chromedriver=2.34.522940 (1a76f96f66e3ca7b8e57d503b4dd3bccfba87af1),platform=Windows NT 6.1.7601 SP1 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 0 milliseconds
Build info: version: 'unknown', revision: 'unknown', time: 'unknown'
System info: host: 'DWA7DEVOS00170', ip: '10.96.162.167', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_25'
Driver info: org.openqa.selenium.chrome.ChromeDriver
... подразумевает, что ChromeDriver не смог сфокусировать на желаемом элементе .
Ваша главная проблема - это несовместимость между версиями двоичных файлов, которые вы используете следующим образом:
Таким образом, существует явное несоответствие между JDK v8u25 , ChromeDriver v2.34 и Chrome Browser v61.0
< hr>Согласно передовым методикам,
@Test
. driver.quit()
в методе tearDown(){}
, чтобы закрыть & amp; Изящно уничтожить экземпляры WebDriver и Web Client .