【发布时间】:2021-12-05 21:42:56
【问题描述】:
driver = webdriver.Chrome(driver_path, options=chrome_options)
wait = WebDriverWait(driver, 20)
driver.get('https://%s/' % asset_id)
wait.until(EC.presence_of_element_located((By.XPATH, "//*[@id='dev_diaginfo_fid']")))
print(driver.find_element_by_xpath('//*[@id='dev_diaginfo_fid']").get_attribute=("innerHTML"))
我可以登录网站,Selenium 返回 WebElement,但从该 WebElement 返回文本时不一致。有时它会返回它,有时它似乎加载速度不够快(正在使用它的网络速度很慢)并且根本不返回任何数据,但我仍然可以看到 WebElement 本身而不是数据。数据通过JS动态加载。可能不相关,但我正在使用 send_keys 传递登录所需的凭据,然后加载包含该版本的页面。
有没有办法使用 ExpectedCondition (EC) 等到它看到文本后再继续?我正在尝试从网络设备中提取固件版本,它找到了固件元素,但在返回实际固件版本时不一致。如前所述,网络速度偶尔会出现问题,所以我怀疑它在加载固件编号之前正在继续。此设备无法访问 Internet,因此我无法共享 URL。我可以确认我已经提取了固件版本,但它只是不一致。
我已经尝试将它传递给 beautifulsoup,并且可以验证它看到的是 Firmware Version: 但内部标签是空的。
编辑:我也尝试过 EC.visibility_of_all_elements 和 EC.visibility_of_element,但没有成功。
【问题讨论】:
-
不确定是否可行,但请尝试使用
EC.visibility_of_element_located。 -
我也尝试过 EC.visibility_of_element_located。我将编辑原件并添加
标签: python selenium web-scraping selenium-chromedriver