Как открыть определенную ссылку с селеном? - PullRequest
3 голосов
/ 11 мая 2019

Я новичок в веб-поиске и пытаюсь открыть ссылку с селеном:

В Google Chrome я использую inspect для кнопки, которую хочу открыть, и получаю следующую информацию:

<a href="/c#candidates?id=a6b0e325a499&amp;candidateFilter=4af15d8991a8" data-tn-link="true" data-tn-element="view-unread-candidates"><span class="jobs-u-font--bold">(4 awaiting review)</span></a>

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

enter image description here enter image description here

(у меня есть несколько кнопок с той же структурой, но разным href, которые мне нужно увидеть)

Также под Properties я вижу a для той же кнопки.

Однако я хочу быть более точным, чем просто использовать, поскольку я хочу только те конкретные ссылки, упомянутые выше:

elements = driver.find_elements_by_tag_name("a")

Кто-нибудь может посоветовать?

Ответы [ 4 ]

2 голосов
/ 11 мая 2019

Вы можете использовать //a[@data-tn-element = 'view-unread-candidates'], в котором будут перечислены все непрочитанные кандидаты.

Если вам нужен конкретный кандидат по идентификатору кандидата, используйте следующий xpath. И установите требуемый идентификатор кандидата.

candidateId = 'a6b0e325a499'
"//a[@data-tn-element = 'view-unread-candidates'][contains(@href,'id=" + candidateId + "')]"
1 голос
/ 11 мая 2019

Для доступа к тегу привязки вы можете использовать css-селектор с атрибутом data-tn-element="view-unread-candidates" Я считаю, что он должен быть одинаковым для всех тегов привязки.

elements=driver.find_elements_by_css_selector('a[data-tn-element="view-unread-candidates"]')
for ele in elements:
    print(ele.get_attribute("href"))

Или если вы хотите использовать дочерний элемент, а затем хотитеизвлеките родительский тег, затем попробуйте следующий код с xpath.

elements=driver.find_elements_by_xpath("//span[@class='jobs-u-font--bold']")
for ele in elements:
    print(ele.find_element_by_xpath("./parent::a").get_attribute('href'))
1 голос
/ 11 мая 2019

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

elem = driver.find_element_by_class_name("jobs-u-font--bold")

Чтобы получить <span>, так как это похоже на уникальное имя класса (хотя я не уверен в вашем посте). Тогда вы можете достичь уровня <a> с

a_elem = elem.find_element_by_xpath("..")

Тогда вы можете a_elem.click() или все, что вы пытаетесь сделать.

0 голосов
/ 12 мая 2019

Я бы использовал:

Элементы списка = driver.findElements (By.xpath ("// a [@ data-tn-element = 'view-unread -андидат']"));

    Iterator<WebElement> iter = elements.iterator();

    while (iter.hasNext()) {
        WebElement item = iter.next();
        String href = item.getAttribute("href");
        System.out.println("href is " + href);
    }
}

И если вы хотите щелкнуть ссылку с конкретным href, вы можете поставить условие if после получения href в приведенном выше коде.Когда это условие будет выполнено, нажмите на элемент.

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