Не удается найти элемент внутри div с помощью селектора xpath или css - PullRequest
1 голос
/ 24 января 2020

Я пытаюсь получить «27 января» как вывод с этим кодом:

task_offer_deadline = driver.find_element_by_xpath('//*[@id="table"]/div[2]/div/a/div[1]/span[2]/div/em').text

xpath, предоставленный Google Chrome Console. Это был html источник:

<div class="content table-contents">
    <a class="one is-incomplete" href="/authors/tasks/5e2ad33c2b3dc80013d3dba6">
        <div class="left part">
            <span class="ref">
                <em>C33-8823</em>
                <strong class="date"></strong>
            </span>
            <span class="deadline-or-countdown">
                <div class="deadline-at">
                    <em class="green">January 27</em>
                </div>
            </span>

, но его не удалось найти. Я даже пробовал с другими типами поиска, идентификатором, именем класса, все безрезультатно. Любые подсказки почему? Большое спасибо!

Ответы [ 3 ]

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

Попробуйте с ниже css, используя webdriver, подождите с visibility элемента

xpath = "//em[.= 'C33-8823']/../..//em[2]"
element = WebDriverWait(driver, 20)
    .until(EC.visibility_of_element_located((By.XPATH, xpath)))
element.text

, вам нужно ниже импорта

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
1 голос
/ 24 января 2020

Попробуйте этот xpath:

xpath = //span[@class='deadline-or-countdown']/div[@class='deadline-at']/em

Если это также не поможет, убедитесь, что ваш элемент не находится внутри <iframe>.

Если элемент находится в iframe , затем вам нужно переключиться на него, прежде чем искать элемент:

iframe = driver.find_element_by_xpath("//iframe[@name='Dialogue Window']")
driver.switch_to.frame(iframe)
0 голосов
/ 24 января 2020

Случилось так, что на странице было несколько экранных фильтров, которые меняют URL, и я искал неправильный URL.

добавление параметров фильтра к адресу ?statuses%5Bin_progress%5D=1. заставило его работать. Спасибо, что посмотрели всех!

...