我正在使用Selenium Python进行自动化测试。所以我试着导航回上一页,在我的脚本中包含了这行代码:
driver.execute_script("window.history.go(-1)")
但后来它就不工作了,它没有导航回上一页。这是我的全部代码:
from selenium import webdriver
import time
#define variable driver
def func1():
driver = webdriver.Chrome("C:/Users/sabrina/Downloads/chromedriver_win32/chromedriver.exe")
driver.get("url")
return driver
driver = func1()
driver.maximize_window()
time.sleep(3)
#click email button
driver.implicitly_wait(10)
emailbutton = driver.find_element_by_xpath('//*[@id="q-app"]/div/div[2]/main/div/button[1]')
emailbutton.click()
time.sleep(1)
driver.implicitly_wait(10)
#enter email & password
driver.find_element_by_xpath('//*[@id="q-app"]/div/div[2]/main/div/form/div[1]/div/div/div[1]/div/input').send_keys("email")
driver.implicitly_wait(50)
driver.find_element_by_xpath('//*[@id="q-app"]/div/div[2]/main/div/form/div[2]/div/div/div[1]/div/input').send_keys("password")
driver.implicitly_wait(50)
#assertion/checkpoint
element3 = driver.find_element_by_xpath('//*[@id="q-app"]/div/div[2]/main/div/div[3]').text
assert element3 == "Forgot your password?"
#click Login with Email button
driver.find_element_by_xpath('//*[@id="q-app"]/div/div[2]/main/div/div[2]/button').click()
driver.implicitly_wait(50)
element4 = driver.find_element_by_xpath('//*[@id="q-app"]/div/div[2]/div[1]/main/div[1]/div[1]/div[2]/button').text
assert element4 == "MAKE REQUEST"
#click Messages
driver.find_element_by_xpath('//*[@id="q-app"]/div/div[2]/header/div[1]/div/div/button[3]/div[2]').click()
time.sleep(2)
#choose requests with "Negotiation" status
element_negoreq = driver.find_element_by_xpath('//*[@id="q-app"]/div/div[2]/main/div/div[2]/div/div/div/div/div/div[1]/div/div[3]/div[3]')
if (element_negoreq.text == "Negotiation"):
element_negoreq.click()
#click Book Now
driver.find_element_by_xpath('//*[@id="q-app"]/div/div[2]/main/div/div/div[2]/div[1]/div/div/div/div[2]/div[2]/button[2]').click()
#tick Agree
time.sleep(3)
#driver.execute_script("window.scrollTo(0,document.body.scrollHeight)")
driver.find_element_by_xpath('//*[@id="q-app"]/div/div[2]/main/div/div[11]/div/div/div[1]').click()
#assert checkout word in current url
assert "checkout" in driver.current_url
print(driver.current_url)
#click Boost
driver.implicitly_wait(10)
driver.find_element_by_xpath('//*[@id="q-app"]/div/div[2]/main/div/div[12]/div/button[1]').click()
driver.execute_script("window.history.go(-1)")
导航回脚本行之前的所有代码都在工作,直到它到达该行为止。我也尝试过使用driver.back()
,但也不起作用。是否与我的缩进有关,或者我没有包含/导入相关模块?有人可以建议吗?
要简单地返回到上一个url,请执行以下两件事。
driver.back()
driver.refresh()
如您所确认,在执行行之后
driver.find_element_by_xpath('//*[@id="q-app"]/div/div[2]/main/div/div[12]/div/button[1]').click()
正在加载新页面。由于您的页面还没有完全加载,并且java脚本单击了返回按钮,所以它是无效的。您可以在这里引入某种等待机制,以确保页面被完全加载。最简单的方法是使用time.sleep((,但这不是一个好的解决方案。我能想到的最好的解决方案是使用如下显式等待:
driver.find_element_by_xpath('//*[@id="q-app"]/div/div[2]/main/div/div[12]/div/button[1]').click()
WebDriverWait(driver, 30).until(EC.presence_of_element_located((By.XPATH, '<xpath of any element on new page>'))) #It will insure page is loaded completely.
driver.execute_script("window.history.go(-1)")
请尝试上面的代码,它会按预期导航回来。