使用Selenium访问下一页的元素。

问题描述 投票:1回答:1

我在使用Selenium进行google自动搜索时遇到了一个问题。所以,我需要在google搜索中粘贴类似'JFK年度乘客2019'这样的内容,并找到答案。答案通常显示在页面的顶部这样。

我写了代码来做,但我不能使用它 因为错误(没有这样的元素异常)。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.wait import WebDriverWait
def search(link):
   driver = webdriver.Safari()
   driver.get("http://www.google.com")
   elem = driver.find_element_by_name("q")
   elem.clear()
   elem.send_keys(link)
   elem.submit()
   elem1 = driver.find_element_by_class_name('Z0LcW XcVN5d AZCkJd')
   nyam = elem1.get_attribute("data-tts-text")
   print(nyam)
   driver.close()
search('JFK annual passengers 2019')

我想问题是我通过开始搜索打开的新的google页面没有看清。

请大家帮忙

python selenium search
1个回答
2
投票

两件事情。首先,当你找到一个有2个或更多类的元素时,用 find_element_by_css_selector 而不是. 其次,你需要在搜索结果页面加载其DOM之前等待。你可以使用python的 time 库的。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.wait import WebDriverWait

import time

def search(link):
   driver = webdriver.Safari()
   driver.get("http://www.google.com")
   elem = driver.find_element_by_name("q")
   elem.clear()
   elem.send_keys(link)
   elem.submit()

   time.sleep(3) # wait 3 seconds
   elem1 = driver.find_element_by_css_selector('.Z0LcW.XcVN5d.AZCkJd')

   nyam = elem1.get_attribute("data-tts-text")
   print(nyam)
   driver.close()


search('JFK annual passengers 2019')
© www.soinside.com 2019 - 2024. All rights reserved.