как использовать find_element после нахождения гиперссылки с помощью click () - PullRequest
1 голос
/ 09 июля 2019

Я использовал

continue_link=driver.find_elements_by_partial_link_text("contract")

, чтобы получить список ссылок.Как применить find_elements к уже полученным веб-элементам?

А как вернуть строки на веб-страницах?Может ли find_element сделать это?

Например:

      <div class="article-detail-text">
         <h1>notice</h1>
         <p class="article-date">release date:2019-05-22</p>

       <p>hi:<br />
  I like basketball and football.<br />
  I like cooking.<br />
  Thanks.</p>

И я хочу вернуться: «Мне нравится баскетбол и футбол. Я люблю готовить. Спасибо.»

Ответы [ 3 ]

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

Я считаю, что правильное выражение XPath для соответствия предоставленному вами фрагменту HTML будет выглядеть примерно так:

//div[@class='article-detail-text']/descendant::p[contains(text(),'hi')]

Как только вы найдете соответствующий тег <div> вы сможете получить текст потомка <p> тега , используя innerText свойство

print(driver
      .find_element_by_xpath("//div[@class='article-detail-text']/descendant::p[contains(text(),'hi')]")
      .get_attribute("innerText"))

Демонстрация:

enter image description here

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

WebElement также имеет find_elements() функции

continue_link = driver.find_elements_by_partial_link_text("contract")
for link in continue_link:
    elements = link.find_elements_by_partial_link_text('')

А чтобы получить конкретную подстроку, вы можете сделать

s1 = 'I like basketball and football'
s2 = 'like'

result = s1[s1.index(s2) + len(s2):]
0 голосов
/ 09 июля 2019

Для возврата текста I like basketball and football. I like cooking. Thanks. Вы можете попробовать следующую опцию.

print(' '.join(driver.find_element_by_xpath("//p[contains(.,'hi:')]").text.split('hi:')[1].splitlines()))

Будет напечатано:

I like basketball and football. I like cooking. Thanks.
...