Найти элемент (с переменной xpath) в HTML-коде с использованием Python selenium - PullRequest
0 голосов
/ 02 апреля 2019

Я хочу автоматизировать процесс входа на веб-сайт, который при каждом входе в систему отправляет код подтверждения по электронной почте. Для этого я использую Python и Selenium.

Вход в системувеб-сайт и щелкнув на электронном письме с кодом подтверждения в моем gmail, это нормально, но как только я нахожусь в электронном письме, я изо всех сил пытаюсь получить идентификационный код.

Я пытался использовать xpath, но проблема в том, что xpathвсегда отличается от кода подтверждения другому.

Например, это xpath для одного из кодов подтверждения, которые я получил по электронной почте:

//[@id=":qs"]/div[2]/table/tbody/tr[3]/td/table/tbody/tr/td[2]/table/tbody/tr[4]/td/div

и еще один из второго кода подтверждения:

//[@id=":3zm"]/div[2]/table/tbody/tr[3]/td/table/tbody/tr/td[2]/table/tbody/tr[4]/td/div

Как вы можете видеть, идентификатор отличается от одного кода к другому, на самом деле это единственное отличие.

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

Это HTML-код:

<table cellpadding="0" cellspacing="0" border="0" style="border-collapse:collapse" class="m_3010061996208616876email-body">
                            <tbody><tr>
                                <td height="50" class="m_3010061996208616876resize, m_3010061996208616876tdDefault"></td>
                            </tr>

                            <tr>
                                <td class="m_3010061996208616876subHeader">
                                    Hello,
                                </td>
                            </tr>
                            <tr>
                                <td height="21" class="m_3010061996208616876tdDefault"></td>
                            </tr>
                            <tr>
                                <td class="m_3010061996208616876emailText"><span class="im">
                                    Your verification code is displayed below. Please use it in the next 15 minutes – after that time it'll expire.
                                    <br><br>

                                    </span><div style="text-align:center;font-size:42px;font-family:PublicoMedium,serif;color:#3e4e61;margin:0 auto;padding:0;line-height:42px">
                                        941976
                                    </div><span class="im">


                                    <br><br>
                                    If you run out of time and need to request a new one, you can do that on the website by clicking 're-send code'.
                                </span></td>
                            </tr>
                            <tr>
                                <td height="50" class="m_3010061996208616876tdDefault"></td>
                            </tr>
                        </tbody></table>

В этом коде я хочу получить код подтверждения 941976.

Я пробовал:

browser.find_element_by_xpath("//p[contains(., 'text-align:center;font-size:42px;font-family:PublicoMedium,serif;color:#3e4e61;margin:0 auto;padding:0;line-height:42px')][1]")

но это не работает.

Спасибо за вашу помощь.

Реми

1 Ответ

0 голосов
/ 02 апреля 2019

Вы можете использовать css селектор ниже:

td[class*='emailText'] div

Код:

verification_code = driver.find_element_by_css_selector("td[class*='emailText'] div").text.strip()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...