Я написал следующий jQueryCode:
$(".row").each(function() {
$(this).find("[itemprop='name']").each(function(idx, val) {
console.log($(val).text())
});
$(this).find("[itemprop='streetAddress']").each(function(idx, val) {
console.log($(val).text())
});
$(this).find("[itemprop='postalCode']").each(function(idx, val) {
console.log($(val).text())
});
$(this).find("[itemprop='addressLocality']").each(function(idx, val) {
console.log($(val).text())
});
$(this).find("[itemprop='telephone']").each(function(idx, val) {
console.log($(val).text())
});
$(this).find("[itemprop='faxNumber']").each(function(idx, val) {
console.log($(val).text())
});
$(this).find("[itemprop='email']").each(function(idx, val) {
console.log($(val).text())
});
$(this).find("[itemprop='url']").each(function(idx, val) {
console.log($(val).text())
});
console.log("[NEW ENTRY]");
});
На данный момент он просто регистрирует содержимое сайта в консоли, что хорошо для последующей отладки, его следует обернуть в объект, но это не проблема.
Я хочу использовать это как сканер в Selen, но код, который я там написал, имеет неожиданное поведение, и я просто не могу понять, в чем здесь проблема.
driver.findElements(By.css(".row")).then(function(elements) { //select all css row-containers
elements.forEach(function(element) {
element.findElements(By.css("[itemprop='name']")).then(function(subelems) {
subelems.forEach(function(subelem) {
subelem.getText().then(function(txt) {
console.log("name:");
console.log(txt);
})
});
});
});
Как можно выбрать в селене каждый элемент .row-Element, а затем искать элементы в этом элементе, как я это делал в jQuery? И как я могу иметь дело с ситуациями, когда такого элемента не существует, потому что тогда он всегда выдает мне ошибки, тогда как jQuery просто игнорирует его и переходит к следующему элементу.