python - 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()
解决方案
你可以试试下面的代码:
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()
小心,因为没有给它一个条件,上面的代码会不停的循环,直到文本发生变化。
推荐阅读
- python - Python asyncio:进入临时异步上下文?
- python - 我想将 R 代码转换为 python。如何使用 python 执行以下给定的操作?
- excel - 在 Excel Javascript API 中使用任意大小的数组设置范围值?
- html - 如何在浏览器视口之外渲染图片?
- powershell - 如何通过powershell使用rest api在azure devops中创建测试运行附件
- javascript - 如何将两种服务变成一种服务?
- r - How can I correct my for loop code to ensure that it is applied to each of my columns and the results are combined together?
- sql-server - SQL 更新设置值 where
- r - 如果函数参数中有NULL,有没有办法删除它们
- build - CMake - 使用外部库作为 APR