我要抓取的网页上包含以下元素。
<a href="http://www.mylink/?p=20391">Sup Bonds Result June 26, 2018</a>
下面是我尝试使用的代码,尽管值存在,但似乎无法正常工作。它最初仅在少数情况下有效,但随后未提供任何结果。
try:
element=driver.find_element_by_partial_text('Sup Bonds Result June 26, 2018')
except NoSuchElementException:
driver.quit()
以下是我收到的错误,我已经用过time.sleep o允许脚本有一段时间来定位元素。
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"link text","selector":"Sup Bonds Result June 26, 2018"}
感谢您的帮助。
答案 0 :(得分:1)
尝试如下申请ExplicitWait:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait as wait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
try:
wait(driver, 10).until(EC.element_to_be_clickable((By.LINK_TEXT, "Sup Bonds Result June 26, 2018")))
except TimeoutException:
driver.quit()
还请注意,如果要使用按链接文本(部分链接文本)进行搜索,则需要传递与在浏览器页面上显示的文本完全相同的文本,而不是像在页面源中显示的那样传递文本。因此,如果它在"SUP BONDS..."
页面上显示,则需要在代码中使用相同的页面
答案 1 :(得分:1)
您似乎很接近。当您只是尝试定位(不单击)该元素时,您需要为该元素的可见性引入 WebDriverWait 。 / em>如下:
try:
element = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.PARTIAL_LINK_TEXT, "Sup Bonds Result June 26, 2018"))).click()
except TimeoutException:
driver.quit()
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException