org.openqa.selenium.WebDriverException: неизвестная ошибка: невозможно фокусировать элемент с ChromeDriver Chrome и Selenium через Java

Мы можем объединить / объединить все данные внутри одной коллекции с простой функцией в нескольких строках с помощью клиентской консоли 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" : [ ]
}

Надеюсь, эти строки помогут вам.

2
задан DebanjanB 27 February 2019 в 08:30
поделиться

3 ответа

Попробуйте использовать класс Actions, чтобы сначала сосредоточиться на элементе, прежде чем использовать sendkeys(), как показано ниже:

Actions actions = new Actions(driver);
actions.moveToElement(driver.findElement(By.name("userId")));
actions.click();
actions.sendKeys("sysadmin");
actions.build().perform();
0
ответ дан Thanthu 27 February 2019 в 08:30
поделиться

Столкнулся с аналогичной проблемой. Вы используете устаревшую версию 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.

  • Последняя версия Selenium - 3.141.59
  • Последняя версия Chromedriver: 73.0.3683.20 [115 ]

Ссылка для скачивания ChromeDriver: Загрузить драйвер Chrome

Ссылка для скачивания Selenium: Загрузить Selenium [1111 ]

Примечание:

Обязательно подождите некоторое время после перехода к нужному URL-адресу. Причина в том, что элементы заполняются в HTML DOM через определенный промежуток времени. В случае, если веб-драйвер проходит через DOM в течение этого времени, driver.findElement () не сможет получить веб-элемент.

webdriver.get(url);
WebDriverWait wait_time = new WebDriverWait(webdriver, 10);
0
ответ дан Safdar Mirza 27 February 2019 в 08:30
поделиться

Это сообщение об ошибке ...

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 не смог сфокусировать на желаемом элементе .


Ваша главная проблема - это несовместимость между версиями двоичных файлов, которые вы используете следующим образом:

  • Вы используете chromedriver = 2,34 [119 ]
  • Вы используете chrome = 61.0
  • Но ваша версия JDK - 1.8.0_25 , что довольно ] старый и древний .

Таким образом, существует явное несоответствие между JDK v8u25 , ChromeDriver v2.34 и Chrome Browser v61.0

< hr>

Решение

  • Обновите JDK до последних уровней JDK 8u201 .

Дополнительные замечания

Согласно передовым методикам,

  • Обновите ChromeDriver до текущей версии ChromeDriver v2. 46 уровень.
  • Обновление версии Chrome до текущих уровней Chrome v71-73 . ( согласно примечаниям к выпуску ChromeDriver v2.46 )
  • Очистите рабочее пространство проекта через IDE и [1122 ] Перестройте ваш проект только с необходимыми зависимостями.
  • Если ваша базовая версия Web Client устарела, удалите ее и установите последнюю версию GA и выпущенную версию Web Client .
  • Возьмите перезагрузку системы .
  • Выполните свой @Test.
  • Всегда вызывать driver.quit() в методе tearDown(){}, чтобы закрыть & amp; Изящно уничтожить экземпляры WebDriver и Web Client .
  • [Тысяча сто пятьдесят шесть]
0
ответ дан DebanjanB 27 February 2019 в 08:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: