如何使用python硒单击第一个Google搜索结果?

时间:2020-03-25 19:54:45

标签: python selenium

我正在尝试编写程序,该程序将单击出现的第一个Google搜索链接。我的代码是:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys 
import time

driver = webdriver.Firefox()
driver.get("https://www.google.com/")
search = driver.find_element_by_name("q")
search.clear()
search.send_keys("bee movie script")
search.send_keys(Keys.RETURN)
time.sleep(3)
assert "No results found." not in driver.page_source
result = driver.find_element_by_xpath('/html/body/div[6]/div[3]/div[8]/div[1]/div[2]/div/div[2]/div[2]/div/div/div[1]/div/div[1]/a/h3')
result.click()

我尝试了多种方法来获得结果,但是自动化无法找到该元素。我从inspect元素复制了xpath,但是出现了一个错误:

NoSuchElementException: Message: Unable to locate element: /html/body/div[6]/div[3]/div[8]/div[1]/div[2]/div/div[2]/div[2]/div/div/div[1]/div/div[1]/a/h3

我不正确地执行此html,该如何解决?谢谢。

2 个答案:

答案 0 :(得分:1)

我找到了一种解决方案:

results = driver.find_elements_by_xpath('//div[@class="r"]/a/h3')  # finds webresults
results[0].click(). # clicks the first one

答案 1 :(得分:0)

您可以使用下面的xpath和CSS选择第n个链接。

xpath: 使用索引

driver.find_element_by_xpath('(//div[@class="r"]/a)[1]').click()

如果要访问第一个匹配的元素,则可以简单地使用.find_element_xpath,尽管有多个与给定的定位器策略匹配的元素(例如xpath,css或其他任何内容),脚本也会选择第一个元素。

driver.find_element_by_css_selector("div.r a h3").click()