Selenium xpath all (// *) не принимает все элементы css - PullRequest
0 голосов
/ 07 октября 2018

Я пытаюсь перечислить каждый цвет на разных сайтах, используя селен (XPath), и я не знаю, почему мой сценарий не получает их все.

background_ele = browser.find_elements_by_xpath("//*[contains(@style,'background')]")
colors_ele = browser.find_elements_by_xpath("//*[contains(@style,'color')]")
background_colors = [x.value_of_css_property('background-color') for x in background_ele]
colors = [x.value_of_css_property('background-color') for x in colors_ele]

Этот код должен получить каждый элемент, имеющий фон или атрибут цвета, но когда я запускаю его для этого веб-сайта: "www.example.com", я не вижу цвет ниже, который появляется нанижний колонтитул и верхний колонтитул:

background-color: rgb(54, 64, 66) !important;

Я печатаю только эти:

['rgba(255, 255, 255, 0)', 'rgba(0, 0, 0, 0)', 'rgba(169, 68, 66, 1)', 'rgba(0, 0, 0, 0)']

Есть ли проблема с моим кодом или, возможно, более эффективный способ сделать это с помощью селена?

ОБНОВЛЕНИЯ

Мой скрипт на самом деле принимает только теги в HTML, а не в CSS-файлах.

<div class="example"style="src="https://example.com/img/slider.jpg"></div>

Как можно использовать селен для целевого каждого атрибута css (из файлов css), который содержит параметр "background" или "color"?

1 Ответ

0 голосов
/ 16 марта 2019

Selenium не обрабатывает CSS-свойства, отсутствующие в DOM-структуре.В качестве альтернативы вы можете использовать jQuery.filter () , применяя класс для каждого необходимого узла, что позволяет найти элемент стандартным способом: для моего примера ниже: //div[contains(@class, 'found')]

$(document).ready(function() {
	$("*").filter(function() {
		return $(this).css("background-color") == "rgb(54, 64, 66)";
	}).text("true").addClass("found"); 
});
.white {
background-color: rgb(255, 255, 255);
}
.black {
background-color: rgba(0, 0, 0, 0);
}
.carmine {
background-color: rgba(169, 68, 66, 1);
}
.cosmos {
background-color: rgb(54, 64, 66);
}
.found {
color: green !important;
font-weight: bold;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="white">false</div>
<div class="black">false</div>
<div class="carmine">false</div>
<div class="cosmos">false</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...