使用 Selenium 验证密码键盘表单 Python
Validating Pin-Pad form using Selenium Python
我正在尝试在网站上提供的密码键盘表单上输入代码并验证它。但是,我收到验证错误。我担心点击的图钉按钮没有被网站的脚本读取。谁能帮我这个?我附上代码和页面源代码。
网站UI是这样的
网站上的div class包含键盘的如下:-
<div class="pin_pad">
<span id='keypad1' onmouseout="this.className=''" onmouseover="this.className='pin_hover'">1</span>
<span id='keypad2' onmouseout="this.className=''" onmouseover="this.className='pin_hover'">2</span>
<span id='keypad3' onmouseout="this.className=''" onmouseover="this.className='pin_hover'">3</span>
<span id='keypad4' onmouseout="this.className=''" onmouseover="this.className='pin_hover'">4</span>
<span class="submit_btn" onmouseout="this.className='submit_btn'" onmouseover="this.className='submit_btnpin_hover'" onclick="return validate();">Submit</span>
</div>
我的密码是“4444”。我正在尝试使用 .click() 方法来点击“4”。虽然我可以看到“4”已被点击 4 次,但在提交时,页面显示验证错误。谁能帮我解决这个问题?这是我在 python 中的代码:-
pinpad = driver.find_elements_by_class_name('pin_pad')
element = driver.find_element_by_xpath("//span[text()=4]").click()
for k in range(4):
actionChains = ActionChains(driver)
actionChains.context_click(element).perform()
time.sleep(1)
driver.find_element_by_xpath("//span[text()='Submit']").submit()
而不是
context_click(element).perform()
这样做:
move_to_element(key4).click().perform()
context_click
用于右键单击,move_to_element
() 用于将鼠标光标移动到指定元素。
简要说明:
你可以引入 WebDriverWait 来提高稳定性,我认为你不需要做 context_click()
而是 move_to_element()
加上 ActionChains 对象创建优化而不是 submit
你可能想使用 click()
。查看下面的代码:
pinpad = driver.find_elements_by_class_name('pin_pad')
key4 = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "span#keypad4"))).click()
actionChains = ActionChains(driver)
for k in range(4):
actionChains.move_to_element(key4).click().perform()
sleep(1)
wait.until(EC.element_to_be_clickable((By.XPATH, "//span[text()='Submit']"))).click()
我正在尝试在网站上提供的密码键盘表单上输入代码并验证它。但是,我收到验证错误。我担心点击的图钉按钮没有被网站的脚本读取。谁能帮我这个?我附上代码和页面源代码。
网站UI是这样的
网站上的div class包含键盘的如下:-
<div class="pin_pad">
<span id='keypad1' onmouseout="this.className=''" onmouseover="this.className='pin_hover'">1</span>
<span id='keypad2' onmouseout="this.className=''" onmouseover="this.className='pin_hover'">2</span>
<span id='keypad3' onmouseout="this.className=''" onmouseover="this.className='pin_hover'">3</span>
<span id='keypad4' onmouseout="this.className=''" onmouseover="this.className='pin_hover'">4</span>
<span class="submit_btn" onmouseout="this.className='submit_btn'" onmouseover="this.className='submit_btnpin_hover'" onclick="return validate();">Submit</span>
</div>
我的密码是“4444”。我正在尝试使用 .click() 方法来点击“4”。虽然我可以看到“4”已被点击 4 次,但在提交时,页面显示验证错误。谁能帮我解决这个问题?这是我在 python 中的代码:-
pinpad = driver.find_elements_by_class_name('pin_pad')
element = driver.find_element_by_xpath("//span[text()=4]").click()
for k in range(4):
actionChains = ActionChains(driver)
actionChains.context_click(element).perform()
time.sleep(1)
driver.find_element_by_xpath("//span[text()='Submit']").submit()
而不是
context_click(element).perform()
这样做:
move_to_element(key4).click().perform()
context_click
用于右键单击,move_to_element
() 用于将鼠标光标移动到指定元素。
简要说明:
你可以引入 WebDriverWait 来提高稳定性,我认为你不需要做 context_click()
而是 move_to_element()
加上 ActionChains 对象创建优化而不是 submit
你可能想使用 click()
。查看下面的代码:
pinpad = driver.find_elements_by_class_name('pin_pad')
key4 = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "span#keypad4"))).click()
actionChains = ActionChains(driver)
for k in range(4):
actionChains.move_to_element(key4).click().perform()
sleep(1)
wait.until(EC.element_to_be_clickable((By.XPATH, "//span[text()='Submit']"))).click()