我在一个项目中使用Selenium,这个项目包括打开一系列网站,这些网站包含几乎相同的结构,收集每个站点中的数据并存储它。
我遇到的问题是,一些我不想访问的网站是不可用的,当程序到达其中一个网站时,它就停止了。
我想要做的是跳过这些,然后继续下一个迭代,但是到目前为止,我的尝试已经过时了…在最近的尝试中,我使用了is_displayed()方法,但显然它只会告诉我一个元素是否可见,而不是告诉我它是否存在。
if driver.find_element_by_xpath('//*[@id="main-2"]/div[2]/div[1]/div[1]/div/div[1]/strong').is_displayed():上面的示例不起作用,因为驱动程序需要在告诉我元素是否可见之前找到元素,但是元素根本不存在。
你们中有人处理过类似的事情吗?
发布于 2021-06-11 12:42:46
您可以使用Selenium期望的条件来等待元素的存在。
我只是举个例子。
我已经在这里定义了5秒的超时,但是您可以使用任何超时值。
此外,元素定位器看起来也很糟糕。
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
element_xpath_locator = '//*[@id="main-2"]/div[2]/div[1]/div[1]/div/div[1]/strong'
wait = WebDriverWait(browser, 5)
wait.until(EC.presence_of_element_located((By.XPATH, element_xpath_locator)))https://stackoverflow.com/questions/67936456
复制相似问题