在动态命名的类中使用Selenium从div获取文本

时间:2018-10-19 16:49:26

标签: python python-3.x selenium selenium-chromedriver

DocSectionB

我希望提取$ 6.49的价值。

我只找到了显示类名静态时如何执行此操作的帖子,例如:

<div class="jss14 jss41">
 <div class="rn-obd0qt rn-1efd50x rn-14skgim rn-rull8r rn-mm0ijv rn-13yce4e rn-fnigne rn-ndvcnb rn-gxnn5r rn-deolkf rn-6koalj rn-1qe8dj5 rn-1mlwlqe rn-eqz5dr rn-1h0z5md rn-1mnahxq rn-61z16t rn-p1pxzi rn-11wrixw rn-ifefl9 rn-bcqeeo rn-wk8lta rn-9aemit rn-1mdbw0j rn-gy4na3 rn-bnwqim rn-1lgpqti">
   <div color="#777" dir="auto" class="rn-13yce4e rn-fnigne rn-ndvcnb rn-gxnn5r rn-deolkf rn-1471scf rn-1b43r93 rn-o11vmf rn-ebii48 rn-t9a87b rn-1mnahxq rn-61z16t rn-p1pxzi rn-11wrixw rn-wk8lta rn-9aemit rn-1mdbw0j rn-gy4na3 rn-bauka4 rn-q42fyq rn-qvutc0" style="color: rgb(119, 119, 119); font-family: Roboto, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-weight: 400; text-align: justify;">$6.49</div>
 </div>
</div>

在单击时动态创建类名时如何处理?

编辑:

根据要求提供更多的externalHTML: enter image description here s://i.stack.imgur.com/m65D8.png

1 个答案:

答案 0 :(得分:0)

当我们找不到匹配的唯一属性时,可以使用dom父级/同级结构或显示的文本值,或组合起来以获得唯一不变的定位符。

例如

  • 此处div有两个直接父级。我们可以以此为标准。因此div> div> div css定位器会减少结果。

  • 然后我想dir =“ auto”并没有改变,我们也可以包含它。因此,css将为div> div> div [dir ='auto']

  • 如果显示值,则肯定在其前面带有标签。

金额: $ 6.49

例如 如果您在div之前有标签。

    <label> Amount</label>
    <div class="jss14 jss41">
      <div class="rn-obd0qt rn-1efd50x rn-14skgim rn-rull8r rn-mm0ijv rn-13yce4e rn-fnigne rn-ndvcnb rn-gxnn5r rn-deolkf rn-6koalj rn-1qe8dj5 rn-1mlwlqe rn-eqz5dr rn-1h0z5md rn-1mnahxq rn-61z16t rn-p1pxzi rn-11wrixw rn-ifefl9 rn-bcqeeo rn-wk8lta rn-9aemit rn-1mdbw0j rn-gy4na3 rn-bnwqim rn-1lgpqti">
       <div color="#777" dir="auto" class="rn-13yce4e rn-fnigne rn-ndvcnb rn-gxnn5r rn-deolkf rn-1471scf rn-1b43r93 rn-o11vmf rn-ebii48 rn-t9a87b rn-1mnahxq rn-61z16t rn-p1pxzi rn-11wrixw rn-wk8lta rn-9aemit rn-1mdbw0j rn-gy4na3 rn-bauka4 rn-q42fyq rn-qvutc0" style="color: rgb(119, 119, 119); font-family: Roboto, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-weight: 400; text-align: justify;">$6.49</div>
     </div>
    </div>

然后您可以使用它来查找该元素,例如

//label[text() == 'Amount']/following-sibling::div/div/div

请找到最接近或不变的父值,然后遍历所需的元素。