为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

守着星空守着你 2021-12-26 15:29:39
我希望将我的登录过程自动化到一个网站,该网站每次尝试登录时都会通过电子邮件发送验证码。为此,我使用 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正如您所看到的,一个代码与另一个代码的 id 不同,这实际上是唯一的区别。所以我想知道是否可以使用 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">在这个中,我要检索的验证码是 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 回答

?
喵喔喔

TA贡献1735条经验 获得超5个赞

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

td[class*='emailText'] div

代码:

verification_code = driver.find_element_by_css_selector("td[class*='emailText'] div").text.strip()



查看完整回答
反对 回复 2021-12-26
  • 1 回答
  • 0 关注
  • 233 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信