使用selenium和python实现google的自动化

使用selenium和python实现google的自动化,python,selenium,automation,Python,Selenium,Automation,我想自动谷歌搜索,搜索后点击第一个网站。 以下是步骤: 问题在第三步,但没有点击给定的链接,也没有给出任何错误 在搜索框中插入值 单击搜索按钮 搜索后,单击第一个网站或任何网站。 此外,daigram是给,它不仅为yotube网站,但动态任何网站。 如果您有比plz提到的任何解决方案 [![attached image is here ][1]][1]from selenium import webdriver import time from selenium.webdriver.c

我想自动谷歌搜索,搜索后点击第一个网站。 以下是步骤: 问题在第三步,但没有点击给定的链接,也没有给出任何错误

  • 在搜索框中插入值

  • 单击搜索按钮

  • 搜索后,单击第一个网站或任何网站。 此外,daigram是给,它不仅为yotube网站,但动态任何网站。 如果您有比plz提到的任何解决方案

     [![attached image is here ][1]][1]from selenium import webdriver
     import time
     from selenium.webdriver.common.keys import Keys
     driver.maximize_window()
     driver.implicitly_wait(20)
     driver.get("https://google.com")
     elem = driver.find_element_by_name("q")
     elem.clear()
     elem.send_keys("youtube")
     elem.send_keys(Keys.RETURN)
     time.sleep(3)
     assert "No results found." not in driver.page_source
     driver.find_element_by_xpath('.//*[@id="rso"]/div[1]/div/div/div/div/h3/a').click()
    

  • 我不确定您为什么要这样做,“搜索后单击第一个网站或任何网站”,但我会尝试使用xpath来单击第一个链接,而不是最后一行:

    from selenium import webdriver
     import time
     from selenium.webdriver.common.keys import Keys
     driver.maximize_window()
     driver.implicitly_wait(20)
     driver.get("https://google.com")
     elem = driver.find_element_by_name("q")
     elem.clear()
     elem.send_keys("youtube")
     elem.send_keys(Keys.RETURN)
     time.sleep(3)
     assert "No results found." not in driver.page_source
     driver.find_element_by_css_selector('div.yuRUbf > a').click()
    
    或者更合适,因为选择器返回所有10个搜索结果链接

    from selenium import webdriver
     import time
     from selenium.webdriver.common.keys import Keys
     driver.maximize_window()
     driver.implicitly_wait(20)
     driver.get("https://google.com")
     elem = driver.find_element_by_name("q")
     elem.clear()
     elem.send_keys("youtube")
     elem.send_keys(Keys.RETURN)
     time.sleep(3)
     assert "No results found." not in driver.page_source
     driver.find_elements_by_css_selector('div.yuRUbf > a')[0].click()
    

    第二个解决方案是完美的答案。