Как найти элемент по 2 тексту? - PullRequest
0 голосов
/ 03 июля 2019

Например, у меня есть такой HTML-код. И я хочу найти это по «Название футболки» и «Цвет - футболка». Как это сделать? И я хочу найти этот цвет, потому что у меня есть еще несколько футболок с тем же именем, но другого цвета.

<article>
  <div class="article">
    <a style="height:150px;" href="/shop/t-shirt">
      <img src="//blablabla.jpg" alt="asdasdas" width="150" height="150">
      <h1><a class="name-link" href="/shop/t-shirt/">T-shirt name</a>
      </h1>
      <p><a class="name-link" href="/shop/t-shirt/">>Color</a></p>
  </div>
</article>
<article>
  <div class="article">
    <a style="height:150px;" href="/shop/t-shirt">
      <img src="//blablabla.jpg" alt="asdasdas" width="150" height="150">
      <h1><a class="name-link" href="/shop/t-shirt/">T-shirt name</a>
      </h1>
      <p><a class="name-link" href="/shop/t-shirt/">>second Color</a></p>
  </div>
</article>

Ответы [ 2 ]

1 голос
/ 03 июля 2019

Используйте WebDriverWait и visibility_of_all_elements_located, а затем xpath для достижения этого.

elements=WebDriverWait(driver,20).until(EC.visibility_of_all_elements_located((By.XPATH,"//h1/a[@class='name-link' and contains(.,'T-shirt name')]")))
for element in elements :

    print('T shirt name : ' +element.text)
    print('T Shirt collor : ' + element.find_element_by_xpath("./following::p/a[@class='name-link']").text)    

Вам необходимо импортировать следующие элементы для выполнения кода выше.

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

EDITED С опцией щелчка для определенного цвета.

elements=WebDriverWait(driver,20).until(EC.visibility_of_all_elements_located((By.XPATH,"//h1/a[@class='name-link' and contains(.,'T-shirt name')]")))
for element in elements :

    print('T shirt name : ' +element.text)
    print('T Shirt collor : ' + element.find_element_by_xpath("./following::p/a[@class='name-link']").text)
    if element.find_element_by_xpath("./following::p/a[@class='name-link']").text=='RED':
        element.find_element_by_xpath("./following::p/a[@class='name-link']").click()
0 голосов
/ 03 июля 2019

Вы можете использовать BeautifulSoup для разбора soup.find_all("a", string="T-shirt name")

аналогичный ответ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...