Попробуйте использовать приведенный ниже фрагмент.
Требуется импорт
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
import time
Добавьте 2 метода ниже при импорте или, если вас устраивает python, пожалуйста, поместите их в отдельную библиотеку / file.
def highlight(web_driver, element):
web_driver = element._parent
original_style = element.get_attribute('style')
web_driver.execute_script("arguments[0].setAttribute('style', arguments[1]);", element,
"background: yellow; border: 2px solid red;")
time.sleep(.3)
web_driver.execute_script("arguments[0].setAttribute('style', arguments[1]);", element, original_style)
def element_click(web_driver,xpath, max_time_out=30):
wait = WebDriverWait(web_driver, max_time_out)
ele = wait.until(EC.element_to_be_clickable((By.XPATH,xpath)))
highlight(webdriver, ele)
ele.click()
Теперь следует вашему сценарию, используя явное ожидание
element_click(driver, "//input[@value= '2350321']")
element_click(driver, "//*[@class='positive']")
element_click(driver, "//ul/li[7]/a")
for i in range(4):
element_click(driver, "//*[@id='logo']") # check if it works if not then you can use the below line and comment this line.
# driver.execute_script("arugments[0].click()",driver.find_element_by_id("logo"))
element_click(driver, "/html/body/div[1]/div/div[3]/form/div[2]/table/tbody/tr[2]/td[8]/a/img")
element_click(driver, "//*[@class='positive']")
element_click(driver, "//*[@class='positive']")
driver.execute_script("window.history.go(-3)")
time.sleep(4)