Возвращаем имя класса и имя атрибута селен питон - PullRequest
0 голосов
/ 20 октября 2018

У меня есть сайт, который выглядит следующим образом, и я хочу извлечь содержимое поля uid, используя firefox + selenium + python.Существует только 1 UID на страницу.

<div class= "parent" >
   <div class="module profile" dcp="1" uid="90">
   ...
   ...
   </div>
</div>

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

<div class= "parent" >
   <div class="module profile" dcp="1" uid="[RETURN THIS]">
   ...
   ...
   </div>
</div>

Я пробовал несколько методов в селене, включая использование

browser.find_elements_by_name
browser.find_elements_by_xpath
browser.find_elements_by_class_name
browser.find_elements_by_css_selector

Но никто из них не может вернуть UID.Я либо получаю пустой набор, либо получаю только класс (т. Е. Весь класс модуля, а не атрибуты внутри DIV).

Я видел, что некоторые люди рекомендуют селектор get_attribute, но мне не удалось применить его к этомуслучай использования.

Любое руководство будет оценено, спасибо.

1 Ответ

0 голосов
/ 20 октября 2018

Для извлечения значения атрибута uid , то есть текста 90 , вы можете использовать любую из стратегий локатора :

  • css_selector:

    myText = browser.find_element_by_css_selector("div.parent>div.module.profile").get_attribute("uid")
    
  • xpath:

    myText = browser.find_element_by_xpath("//div[@class='parent']/div[@class='module profile']").get_attribute("uid")
    

Однако кажется, что атрибут uid то есть текст 90 является динамическим элементом, поэтому вам нужно заставить WebDriverWait , чтобы элемент был видимым , и вы можете использовать любой из следующихрешения:

  • css_selector:

    myText = WebDriverWait(browser, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.parent>div.module.profile"))).get_attribute("uid")
    
  • xpath:

    myText = WebDriverWait(browser, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='parent']/div[@class='module profile']"))).get_attribute("uid")
    

Примечание : необходимо добавить следующие операции импорта:

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