我正在尝试使用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>
标签:python,xpath,selenium 来源: https://codeday.me/bug/20190710/1424889.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。