我希望将我的登录过程自动化到一个网站,该网站每次尝试登录时都会通过电子邮件发送验证码。为此,我正在使用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">
<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]")
但是它不起作用。
感谢您的帮助。
Rémi
答案 0 :(得分:0)
您可以在下面使用css选择器:
td[class*='emailText'] div
代码:
verification_code = driver.find_element_by_css_selector("td[class*='emailText'] div").text.strip()