首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Selenium Python填充验证号

使用Selenium Python填充验证号
EN

Stack Overflow用户
提问于 2021-04-06 00:05:59
回答 2查看 172关注 0票数 2

我试图填充一个电子邮件验证号码,到一个网页。假设我将6位数字作为字符串,那么是否有一种方法可以在python中使用selenium填充它呢?

下面是链接:https://testnet.phemex.com/login

以下是html

代码语言:javascript
运行
复制
<div>
   <div class="wrap svelte-1ysrabk">
      <div class="digits svelte-1ysrabk">
         <div class="digit-box svelte-1ysrabk active"><span class="txt svelte-1ysrabk">1</span> <input type="number" maxlength="1" max="9" data-index="0" class="svelte-1ysrabk"></div>
         <div class="digit-box svelte-1ysrabk"><span class="txt svelte-1ysrabk">1</span> <input type="number" maxlength="1" max="9" data-index="1" class="svelte-1ysrabk"></div>
         <div class="digit-box svelte-1ysrabk"><span class="txt svelte-1ysrabk"></span> <input type="number" maxlength="1" max="9" data-index="2" class="svelte-1ysrabk"></div>
         <div class="digit-box svelte-1ysrabk"><span class="txt svelte-1ysrabk"></span> <input type="number" maxlength="1" max="9" data-index="3" class="svelte-1ysrabk"></div>
         <div class="digit-box svelte-1ysrabk"><span class="txt svelte-1ysrabk"></span> <input type="number" maxlength="1" max="9" data-index="4" class="svelte-1ysrabk"></div>
         <div class="digit-box svelte-1ysrabk"><span class="txt svelte-1ysrabk"></span> <input type="number" maxlength="1" max="9" data-index="5" class="svelte-1ysrabk"></div>
      </div>
      <div class="explain svelte-1ysrabk"></div>
   </div>
</div>

若要查看该字段,请执行以下步骤:

进入https://testnet.phemex.com/

  • Click Login

  • ,在下一个字段中单击"Reset Password"

  • Enter your email

  • Click“继续”

有六个不同数据索引的数字框,我不知道如何填充它们。感谢任何潜在的帮助!

EN

回答 2

Stack Overflow用户

发布于 2021-04-06 02:35:52

代码语言:javascript
运行
复制
digits = driver.find_elements_by_xpath("//div[contains(@class,'digit-box')]/input")
for digit in digits:
    digit.send_keys("1")

你可以像这样发送到单个的盒子

代码语言:javascript
运行
复制
digits[2].send_keys("3")

您可以通过xpath找到所有输入标记,然后对它们进行send_keys。

整个代码是这样的

代码语言:javascript
运行
复制
driver = webdriver.Chrome()
wait = WebDriverWait(driver, 10)
driver.get("https://testnet.phemex.com/login")
wait.until(EC.element_to_be_clickable((By.XPATH,"//a[.='Get Started']"))).click()
wait.until(EC.element_to_be_clickable((By.XPATH,"/html/body/div[1]/div/div/div/div[2]/div/div/div[3]/div[1]/span/input"))).send_keys('a')
wait.until(EC.element_to_be_clickable((By.XPATH,"/html/body/div[1]/div/div/div/div[2]/div/div/div[3]/div[2]/span/input"))).send_keys('a')
wait.until(EC.element_to_be_clickable((By.XPATH,"/html/body/div[1]/div/div/div/div[2]/div/div/div[4]/button"))).click()
digits = wait.until(EC.presence_of_all_elements_located((By.XPATH,"//div[contains(@class,'digit-box')]/input")))
for digit in digits:
    digit.send_keys("1")
digits[2].send_keys("4")

导入

代码语言:javascript
运行
复制
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC
票数 1
EN

Stack Overflow用户

发布于 2021-04-06 02:38:01

每个字段都有其唯一的定位器:当您想用1填充每个字段时,下面的.digit-box.svelte-1ysrabk >.txt.svelte-1ysrabk.digit-box.svelte-1ysrabk:nth-of-type(n) >input是大小写的片段。

代码语言:javascript
运行
复制
digits = driver.find_elements_by_css_selector(".digit-box.svelte-1ysrabk >input")
for digit in digits:
    digit.send_keys("1")

若要单独填写所有字段,请使用:

代码语言:javascript
运行
复制
digit1 = driver.find_element_by_css_selector(".digit-box.svelte-1ysrabk:nth-of-type(1) >input")
digit1.send_keys("1")
digit2 = driver.find_element_by_css_selector(".digit-box.svelte-1ysrabk:nth-of-type(2) >input")
digit1.send_keys("2")
digit3 = driver.find_element_by_css_selector(".digit-box.svelte-1ysrabk:nth-of-type(3) >input")
digit1.send_keys("3")
...

或者,您可以创建一个值列表,并将此列表中的值填充到您的字段中(自己尝试)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66961187

复制
相关文章

相似问题

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