Как найти элемент с помощью xpath через Selenium - PullRequest
0 голосов
/ 11 января 2020

Как найти элемент, используя xpath через Selenium

Пробный код:

By.xpath("//*[contains(@class,'a-size-mini a-spacing-none a-color-base s-line-clamp-2') and contains(text(), \"Men's Downshifter 9 Training Shoes\")]"));

HTML:

<h2 class="a-size-mini a-spacing-none a-color-base s-line-clamp-2">
    <a class="a-link-normal a-text-normal" href="/Nike-Downshifter-Running-Shoes-Anthracite/dp/B07H84PMGS/ref=sr_1_3?dchild=1&amp;keywords=NIKE+TRAINERS+FOR+MEN&amp;qid=1578766779&amp;sr=8-3">
    
<span class="a-size-base-plus a-color-base a-text-normal">Men's Downshifter 9 Training Shoes</span>
            
       </a>

    
</h2>

Ответы [ 2 ]

1 голос
/ 11 января 2020

Закрытие ]

By.xpath("//*[contains(@class,'a-size-mini a-spacing-none a-color-base s-line-clamp-2') and contains(text(), \"Men's Downshifter 9 Training Shoes\")]]"));

Варианты:

  1. //h2[.='Men's Downshifter 9 Training Shoes']
  2. //span[.='Men's Downshifter 9 Training Shoes']/ancestor::h2[1]
  3. //h2[./a[.='Men's Downshifter 9 Training Shoes']]
0 голосов
/ 12 января 2020

Чтобы найти элемент, вы можете использовать одну из следующих на основе Стратегии локатора :

  • Использование xpath и text():

    By.xpath("//span[text()=\"Men's Downshifter 9 Training Shoes\"]"));
    
  • Использование xpath и contains():

    By.xpath("//span[@class='a-size-base-plus a-color-base a-text-normal' and contains(., 's Downshifter 9 Training Shoes')]"));
    
  • Использование xpath и родительский <a> тег:

    By.xpath("//a[@class='a-link-normal a-text-normal' and starts-with(@href, '/Nike-Downshifter-Running-Shoes-Anthracite/dp/')]/span[@class='a-size-base-plus a-color-base a-text-normal' and contains(., 'Downshifter 9 Training Shoes')]"));
    
...