Python + Selenium WebDriver - 如果兄弟包含字符串,则获取div值

时间:2015-06-19 23:53:35

标签: python selenium xpath selenium-webdriver

我正在尝试使用Python / Selenium从网页中的div获取值,其中类名重复但包含唯一字符串,例如下面的结构。

<div class='ClassName'>
    <div class="col_Num">1 </div>
    <div class="col_Val">5.00 </div>
</div>

<div class='ClassName'>
    <div class="col_Num">2 </div>
    <div class="col_Val">2.00 </div>
</div>

如何获得&#39; Col_Val&#39;的价值?仅来自包含&#34; col_Num = 1&#34;的div (应返回值5.00并保存到变量中)

我目前尝试将Selenium IDE(从我自己过去的问题中获得的代码)转换为Python的解决方案如下所示,但不起作用,因为&#39;包含&#39;在css选择器中无效,所以我相信我必须使用Xpath但不知道如何。

price = driver.find_element_by_css_selector("div:contains(\"1\")+[class=col_Val]").text

2 个答案:

答案 0 :(得分:3)

following-sibling轴会对此有所帮助:

  

following-sibling轴表示具有相同的所有节点   parent作为上下文节点并出现在上下文节点之后   来源文件。

//div[@class = "col_Num" and . = "1 "]/following-sibling::div[@class = "col_Val"]

答案 1 :(得分:0)

实际上,Contains是CSS3中不支持的CSS2函数,但Selenium支持CSS1,2和3的超集。因此,css选择器应该可以进行一些修改。

price = driver.find_element_by_css_selector("div:contains('1') + div.col_Val").text