【发布时间】:2019-12-04 14:44:16
【问题描述】:
我正在单击某个链接,并希望读取给定类中的所有文本并将其作为 pandas 数据框中的一行返回
这是我的代码
page_link = 'http://beta.compuboxdata.com/fighter'
wait = WebDriverWait(cdriver,10)
wait.until(EC.visibility_of_element_located((By.ID,'s2id_autogen1'))).send_keys('Deontay Wilder')
wait.until(EC.visibility_of_element_located((By.CLASS_NAME, 'select2-result-label'))).click()
while True:
wait.until(EC.visibility_of_element_located((By.CLASS_NAME, 'view_more'))).click()
try:
element = wait.until(EC.visibility_of_element_located((By.CLASS_NAME, 'view_more')))
element.click()
except TimeoutException:
break
fights['fighters'] = wait.until(EC.find_element_by_class_name((By.CLASS_NAME,'col-xs-4 col-sm-4 col-md-4 col-lg-4'))).text
然而,这会返回错误消息:
TimeoutException: Message:
我也尝试过使用 xpath,但仍然收到相同的错误消息:
fights['fighters'] = wait.until(EC.find_element_by_xpath((By.CLASS_NAME,'//div[@class="col-xs-4 col-sm-4 col-md-4 col-lg-4"]/div'))).text
根据要求,这是完整的回溯
<ipython-input-94-e2b36e136c00> in <module>
14 wait.until(EC.visibility_of_element_located((By.CLASS_NAME, 'select2-result-label'))).click()
15 while True:
---> 16 wait.until(EC.visibility_of_element_located((By.CLASS_NAME, 'view_more'))).click()
17 try:
18 element = wait.until(EC.visibility_of_element_located((By.CLASS_NAME, 'view_more')))
~\Anaconda3\lib\site-packages\selenium\webdriver\support\wait.py in until(self, method, message)
78 if time.time() > end_time:
79 break
---> 80 raise TimeoutException(message, screen, stacktrace)
81
82 def until_not(self, method, message=''):
TimeoutException: Message:
更新
我尝试添加一个 for 循环来读取多个文本元素,但仍然遇到相同的错误
elements = wait.until(EC.find_element_by_class_name((By.CLASS_NAME,'col-xs-4 col-sm-4 col-md-4 col-lg-4')))
for e in elements:
print(e.text)
【问题讨论】:
-
你能发布 html 页面源代码和完整的堆栈跟踪吗?如果你想在一个页面上收集多个元素,那么你必须使用 'find_elements' 方法而不是 'find_element'
-
@Sureshmani 我已经更新了我的问题
标签: python pandas selenium selenium-webdriver