簡體   English   中英

Selenium xpath all(// *)不會占用每個css元素

[英]Selenium xpath all (//*) doesn't take every css elements

我正在嘗試使用selenium(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)']

我的代碼是否存在問題,或者使用selenium可能是一種更有效的方法?

更新

我的腳本實際上只接受html中的標記而不是css文件中的標記。

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

如何使用selenium來定位包含參數“background”或“color”的每個css屬性(來自css文件)?

Selenium不處理DOM結構中缺少的CSS屬性。 或者,您可以使用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> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM