首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Python selenium在HTML代码中查找元素(带有变量xpath

使用Python selenium在HTML代码中查找元素(带有变量xpath
EN

Stack Overflow用户
提问于 2019-04-03 00:26:04
回答 1查看 184关注 0票数 0

我希望自动登录到一个网站,每次我尝试登录时都会通过电子邮件发送验证码。为此,我使用Python和Selenium。

登录网站并点击我的gmail中包含验证码的电子邮件是很好的,但一旦我进入电子邮件,我就很难得到验证码。

我尝试使用xpath,但问题是不同验证码的xpath总是不同。

例如,这是我通过电子邮件收到的验证码之一的xpath:

代码语言:javascript
运行
复制
//[@id=":qs"]/div[2]/table/tbody/tr[3]/td/table/tbody/tr/td[2]/table/tbody/tr[4]/td/div

以及来自第二验证码的另一个验证码:

代码语言:javascript
运行
复制
//[@id=":3zm"]/div[2]/table/tbody/tr[3]/td/table/tbody/tr/td[2]/table/tbody/tr[4]/td/div

正如你所看到的,id在不同的代码中是不同的,这实际上是唯一的区别。

所以我想知道是否可以使用HTML中的另一个元素来获得验证码。

这是HTML代码:

代码语言:javascript
运行
复制
<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。

我试过了:

代码语言:javascript
运行
复制
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]")

但它不起作用。

谢谢你的帮助。

Rémi

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-03 00:47:35

你可以使用下面的css选择器:

代码语言:javascript
运行
复制
td[class*='emailText'] div

代码:

代码语言:javascript
运行
复制
verification_code = driver.find_element_by_css_selector("td[class*='emailText'] div").text.strip()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55479494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档