首页 > 解决方案 > Selenium 循环直到找到属性

问题描述

我试图刷新一个网站,直到和元素的内部文本/内部html发生变化。

from selenium import webdriver
from selenium.webdriver.support.select import Select
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.support.ui import Select

driver = webdriver.Chrome(executable_path='C:/Users/smnsc/Desktop/bot/driver/chromedriver')
driver.get('https://cybersole.io/')


while True:
    try:
        driver.find_element_by_id('purchase-button')
        driver.__getattribute__('Purchase £300')
        break
    except (NoSuchElementException):
        wait=WebDriverWait(driver, 10)
        waitUntil = wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="purchase-button"]')))
        driver.__getattribute__('Sold Out £300')
        driver.refresh()

标签: pythonselenium

解决方案


你可以试试下面的代码:

driver.get('https://cybersole.io/')

text_before = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.XPATH, '//div[@id="purchase-button"]//span[text()!=""]'))).text
print(text_before)

while True:
    try:
        text_changed = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, '//div[@id="purchase-button"]//span[text()!=' +text_before +']'))).text
        print(text_changed)
    except Exception:
        print("The text hasn't changed")
        driver.refresh()

小心,因为没有给它一个条件,上面的代码会不停的循环,直到文本发生变化。


推荐阅读