Python 单击和鼠标单击之间的不同行为

Python 单击和鼠标单击之间的不同行为,python,python-3.x,selenium,selenium-firefoxdriver,Python,Python 3.x,Selenium,Selenium Firefoxdriver,当前行为 使用这段代码 from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By browser = webdriver.Fi

当前行为

使用这段代码

    from selenium import webdriver
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.common.by import By
    browser = webdriver.Firefox()
    button_value = '/html/body/div/div[2]/div/div/div/div/div[1]/div/form/div/div[3]/div[3]/a[2]'
    .........
    browser.find_element(By.XPATH, pin_box).send_keys(pin)
    browser.find_element(By.XPATH,, button_value).click() #Click NEXT Button
在这一页上

我最终返回到登录

但是如果我在上面加一个断点

browser.find_element(button_type, button_value).click()
我用鼠标手动点击

我将转到所需的页面

预期行为

最终进入所需页面,即不是通过Selenium登录页面,就像手动单击next按钮一样

PS:PIN,以防您需要

尝试使用webdriver等待或下一步按钮上的send ENTER键单击。作为最后一个选项,您可以尝试使用Javascript单击

from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

element = WebDriverWait(driver, 20).until(
EC.element_to_be_clickable((By.XPATH, "//a[.='NEXT']")))
element.click()
尝试使用Enter或Return单击

或者尝试使用Java脚本单击,但不要等待,因为等待时可能会失败

尝试使用webdriver等待或下一步按钮上的send ENTER键单击。作为最后一个选项,您可以尝试使用Javascript单击

from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

element = WebDriverWait(driver, 20).until(
EC.element_to_be_clickable((By.XPATH, "//a[.='NEXT']")))
element.click()
尝试使用Enter或Return单击

或者尝试使用Java脚本单击,但不要等待,因为等待时可能会失败


后来在我的代码中有一个URL重定向。此重定向没有给完成单击提交的时间。下面的代码修复了这个问题

.......    
browser.find_element(By.XPATH, pin_box).click() #Click NEXT Button
WebDriverWait(browser, timeout).until(EC.invisibility_of_element_located((By.XPATH, pin_box))) 

很抱歉,感谢在这方面帮助过我的人

在我的代码后面,URL被重定向了。此重定向没有给完成单击提交的时间。下面的代码修复了这个问题

.......    
browser.find_element(By.XPATH, pin_box).click() #Click NEXT Button
WebDriverWait(browser, timeout).until(EC.invisibility_of_element_located((By.XPATH, pin_box))) 


非常抱歉并感谢在这方面帮助我的人

您到底在做什么?单击此处浏览器。查找元素按钮键入,按钮值。单击。传递了哪些值?我正在单击“下一步”按钮,让我修改示例代码您使用的下一步按钮的定位器是什么?By.XPATH,几分钟前我和Jonah一起修改了代码comments@JBRolland:发布“下一步”按钮的html,以便OP可以为您提供帮助。单击此处浏览器,您到底在做什么。查找元素按钮类型,按钮\ U值。单击。传递了哪些值?我正在单击“下一步”按钮,让我修改示例代码您使用的下一步按钮的定位器是什么?By.XPATH,几分钟前我和Jonah一起修改了代码comments@JBRolland:发布下一步按钮的html,以便OP可以帮助您。谢谢。最后在我的代码中出现了URL的重定向。此重定向没有提供完成提交的时间。下面的代码WebDriverWaitbrowser,self.timeout.untelec.invisibility_of_element_locatedBy.XPATH,//a[.='NEXT']修复了这个问题。感谢您的帮助。我可以知道您是如何找到Xpath//a[.='NEXT']的,而当我从检查器复制Xpath时,我得到了/html/body/div/div[2]/div/div/div/div/div[1]/div/form/div/div[3]/div[3]/a[2]?@JBRolland这个Xpath是基于文本搜索元素的。您提到的xpath是绝对的,不可靠的。html结构中的任何更改都可能破坏它。@JBRolland Yes with webdriver wait it获得时间在DOM中加载元素。如果它解决了你的问题,请接受它作为答案。是的,这就是为什么我要问,我不知道这样的搜索功能存在。再次感谢汉克斯。最后在我的代码中出现了URL的重定向。此重定向没有提供完成提交的时间。下面的代码WebDriverWaitbrowser,self.timeout.untelec.invisibility_of_element_locatedBy.XPATH,//a[.='NEXT']修复了这个问题。感谢您的帮助。我可以知道您是如何找到Xpath//a[.='NEXT']的,而当我从检查器复制Xpath时,我得到了/html/body/div/div[2]/div/div/div/div/div[1]/div/form/div/div[3]/div[3]/a[2]?@JBRolland这个Xpath是基于文本搜索元素的。您提到的xpath是绝对的,不可靠的。html结构中的任何更改都可能破坏它。@JBRolland Yes with webdriver wait it获得时间在DOM中加载元素。如果它解决了你的问题,请接受它作为答案。是的,这就是为什么我要问,我不知道这样的搜索功能存在。再次感谢您的问题即将单击“下一步”按钮,而不是在单击后等待加载下一页。您应该在问题中提到它。您的问题是要单击“下一步”按钮,而不是在单击后等待加载下一页。你应该有疑问地提到它。
.......    
browser.find_element(By.XPATH, pin_box).click() #Click NEXT Button
WebDriverWait(browser, timeout).until(EC.invisibility_of_element_located((By.XPATH, pin_box)))