Python + Selenium:等待元素完全加载

发布于 2021-01-29 17:31:14

所以我一直在尝试使用Selenium中的函数:

wait = WebDriverWait(browser, 20).wait.until(EC.element_to_be_clickable((By.XPATH, '//*[@id="accountStandalone"]/div/div/div[2]/div/div/div[1]/button')))
wait.click()

在我开始说这个问题之前。我要做的Selenium基本上是制作一个自动写到这张图中的小精灵的Selenium

但是,尝试使用此工具时出现问题。原因是它不等到找到它,而是立即运行并执行其他不应执行的操作。现在,它只是跳过等待,就像该功能不起作用或根本不存在一样。我做错了什么?


更新:

我所知道的是,每当我尝试在该网站上注册时,该网站都不会更改,这意味着当它成为一个成功的帐户后,它将带我进入一个新页面。但是它会自动刷新并说成功了。因此,这意味着我想以某种方式制作某种东西,使其能够检查并查看页面是否发生了新变化。如果没有,请重试,然后重试?…类似的东西?

我要做的是等检查是否存在:

<div class="confirmation-title nsg-font-family--platform nsg-text--black edf-title-font-size--xlarge js-confirmationTitle">NU ÄR DU MEDLEM, Hello.</div>

要么

<button type="button" class="nsg-button nsg-bg--black register-next-step-cta js-nextStepCta">FORTSÄTT</button>

但是问题就象我所说的那样,每当我按“ SKAPA KONTO”时-它只等待服务器再次检查,然后自动刷新页面并说成功。

关注者
0
被浏览
157
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    首先,我坚信您已经很接近了。您只需要用 Pythonic 格式化代码,就可以立即解决您的问题,如下所示:

    WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="accountStandalone"]/div/div/div[2]/div/div/div[1]/button'))).click()
    

    您已经提到实际问题, 只是 提到 它不等到发现它之后就转瞬即变,并做了其他不应该做的事情, 而不是提到您的程序应该做什么(例如 您的代码试用
    )和错了,您的程序正在执行(即 错误堆栈跟踪 )。

    根据您共享的 HTML ,您可以按如下方式为两个 WebElement 诱导一个服务员:

    • 等待文本 NUÄR DU MEDLEM 的可见性 ,您好。

      • CSS_SELECTOR:

            WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.confirmation-title.nsg-font-family--platform.nsg-text--black.edf-title-font-size--xlarge.js-confirmationTitle")))
        
      • XPATH:

            WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='confirmation-title nsg-font-family--platform nsg-text--black edf-title-font-size--xlarge js-confirmationTitle' and contains(.,'NU ÄR DU MEDLEM, Hello.')]")))
        
    • 服务员等待带有文字 FORTSÄTT 的按钮:

      • CSS_SELECTOR:

            WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button.nsg-button.nsg-bg--black.register-next-step-cta.js-nextStepCta")))
        
      • XPATH:

            WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@class='nsg-button nsg-bg--black register-next-step-cta js-nextStepCta' and contains(.,'FORTSÄTT')]")))
        


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看