无法在 python 中使用 selenium 找到链接?
Unable to find links using selenium in python?
我正在使用 selenium 抓取网页。我先找到我要的link然后点击下载(Link是pdf)。有时我能够这样做,但有时硒会说 link 未找到。我想这是由于页面加载不正确造成的。我能做些什么,我的方向是否正确?
这是我之前的代码:
for b in source_code_2.find_all('a', href=True):
if b.has_attr("title"):
if(b['title']=='Click here to download'):
urllib2.urlretrieve(full_url)
现在我想用硒和元素来做。我该怎么做?
我认为您应该使用显式等待来告诉 selenium 等待特定元素正确加载,在 python 中您可以通过以下方式使用显式等待:
element = WebDriverWait(driver, 20).until(
EC.presence_of_element_located((By.ID, "yourElement"))
或
element = WebDriverWait(driver, 20).until(
EC.element_to_be_clickable((By.ID, "yourElement"))
element.click()
你只需要在上面的代码中替换你的元素ID,你可以根据需要将20秒更改为30,40。所以上面代码的意思是你的 webdriver 会等到 20 秒才能找到那个特定的元素。
我正在使用 selenium 抓取网页。我先找到我要的link然后点击下载(Link是pdf)。有时我能够这样做,但有时硒会说 link 未找到。我想这是由于页面加载不正确造成的。我能做些什么,我的方向是否正确?
这是我之前的代码:
for b in source_code_2.find_all('a', href=True):
if b.has_attr("title"):
if(b['title']=='Click here to download'):
urllib2.urlretrieve(full_url)
现在我想用硒和元素来做。我该怎么做?
我认为您应该使用显式等待来告诉 selenium 等待特定元素正确加载,在 python 中您可以通过以下方式使用显式等待:
element = WebDriverWait(driver, 20).until(
EC.presence_of_element_located((By.ID, "yourElement"))
或
element = WebDriverWait(driver, 20).until(
EC.element_to_be_clickable((By.ID, "yourElement"))
element.click()
你只需要在上面的代码中替换你的元素ID,你可以根据需要将20秒更改为30,40。所以上面代码的意思是你的 webdriver 会等到 20 秒才能找到那个特定的元素。