首页 > 解决方案 > Python selenium:这段代码有什么问题?

问题描述

下面的代码是 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)

标签: pythonseleniumxpath

解决方案


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

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()

推荐阅读