Python selenium:这段代码有什么问题?

Python selenium:这段代码有什么问题?,python,selenium,xpath,Python,Selenium,Xpath,下面的代码是selenium代码的一部分,用于选择游戏并提交。。。有时,当赔率发生变化时,会出现一个新的按钮“Accept changes”(接受变化),我尝试了下面的代码,但每当发生异常变化时,它仍然不起作用。脚本始终在接受更改时停止,但出现异常。我需要帮助,请 driver.find_element_by_xpath("//*[@id='j_stay']/div/div[3]/div/span/input").send_keys(Keys.CONTROL + "

下面的代码是selenium代码的一部分,用于选择游戏并提交。。。有时,当赔率发生变化时,会出现一个新的按钮“Accept changes”(接受变化),我尝试了下面的代码,但每当发生异常变化时,它仍然不起作用。脚本始终在接受更改时停止,但出现异常。我需要帮助,请

driver.find_element_by_xpath("//*[@id='j_stay']/div/div[3]/div/span/input").send_keys(Keys.CONTROL + "a")
driver.find_element_by_xpath("//*[@id='j_stay']/div/div[3]/div/span/input").send_keys(Keys.DELETE)
driver.find_element_by_xpath("//*[@id='j_stay']/div/div[3]/div/span/input").send_keys('300')
time.sleep(2)
elems = driver.find_elements_by_xpath("//span[text()[normalize-space()='Accept Changes']]")
if len(elems) > 0 and elems[0].is_displayed():
    elems[0].click()
    time.sleep(2)
    driver.find_element_by_xpath("//*[@id='j_buyer']/div[2]/div[4]/div/div[5]/button").click()
    time.sleep(2)
    driver.find_element_by_xpath("//*[@id='j_buyer']/div[2]/div[4]/div/div[6]/div/div[2]/button[2]").click()
    time.sleep(2)
    driver.find_element_by_xpath("//span[text()[normalize-space()='OK']]").click()
    time.sleep(1)
    driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + Keys.HOME)
    time.sleep(1)
else:
    driver.find_element_by_xpath("//*[@id='j_buyer']/div[2]/div[4]/div/div[5]/button").click()
    time.sleep(2)
    driver.find_element_by_xpath("//*[@id='j_buyer']/div[2]/div[4]/div/div[6]/div/div[2]/button[2]").click()
    time.sleep(2)
    driver.find_element_by_xpath("//span[text()[normalize-space()='OK']]").click()
    time.sleep(1)
    driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + Keys.HOME)
    time.sleep(1)

这听起来像是利用你的睡眠是这里的问题:

time.sleep(2)

elems = driver.find_elements_by_xpath("//span[text()[normalize-space()='Accept Changes']]")
你可能想等些什么。。。也许是为了展示它(没有更多的上下文很难说)。 试试这个:

element = WebDriverWait(driver, 10).until(
        EC.visibility_of_element_located((By.XPATH, "//span[text()[normalize-space()='Accept Changes']]"))
element.click()

您应该包括您正在获取的异常以及异常发生时页面的html。一般来说,这些休眠可能有点问题。您可能应该在预期的条件下使用webdriverwaits。异常是什么?另外,既然您在else块中重复了大部分if语句,为什么不将您的
elems[0]。在if语句中单击()
。您实际上不需要重复所有代码。下面出现错误:selenium.common.exceptions.StaleElementReferenceException:消息:stale元素引用:元素未附加到页面文档