2017-10-19 124 views
0

我已經寫了一個帶有硒的小型python腳本來搜索Google並打開第一個鏈接,但每當我運行此腳本時,它都會打開一個控制檯並打開一個新的Chrome窗口並運行該Chrome窗口中的腳本。試圖在硒打開的瀏覽器中打開一個標籤

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

def main(): 
    setup() 

# open Chrome and open Google 
def setup(): 
    driver = webdriver.Chrome(r'C:\\python_programs'+ 
           '(Starting_out_python)'+ 
           '\\chromedriver.exe') 
    driver.get('https://www.google.com') 
    assert 'Google' in driver.title 
    mySearch(driver) 

#Search keyword 

def mySearch(driver): 
     search = driver.find_element_by_id("lst-ib") 
     search.clear() 
     search.send_keys("Beautiful Islam") 
     search.send_keys(Keys.RETURN) 
     first_link(driver) 

#click first link 

def first_link(driver): 
     link = driver.find_elements_by_class_name("r") 
     link1 = link[0] 
     link1.click() 
main() 

如何在我使用的瀏覽器中打開此項?

+0

您的意思是說您希望腳本在您手動打開的瀏覽器實例中打開選項卡? – Andersson

+0

無法使用Selenium在您使用的同一瀏覽器上打開新選項卡。 – Buaban

+0

好的。因爲我也希望從這裏開始搜索,一旦打開第一個鏈接,我會複製一些內容,如果Facebook打開或打開它,檢查我打開的標籤,然後用什麼來更新我的狀態我從以前的網站複製過來的。 –

回答

0
from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
from selenium.webdriver.common.action_chains import ActionChains 

def main(): 
    setup() 

# open Chrome and open Google 
def setup(): 
    driver = webdriver.Chrome() 
    driver.get('https://www.google.com') 
    assert 'Google' in driver.title 
    mySearch(driver) 

#Search keyword 

def mySearch(driver): 
     search = driver.find_element_by_id("lst-ib") 
     search.clear() 
     search.send_keys("test") 
     search.send_keys(Keys.RETURN) 
     first_link(driver) 

#click first link 

def first_link(driver): 
     link = driver.find_elements_by_xpath("//a[@href]") 
     # uncomment to see each href of the found links 
     # for i in link: 
     #  print(i.get_attribute("href")) 
     first_link = link[0] 
     url = first_link.get_attribute("href") 
     driver.execute_script("window.open('about:blank', 'tab2');") 
     driver.switch_to.window("tab2") 
     driver.get(url) 
     # Do something else with this new tab now 
main() 

一些觀察:你得到的第一個鏈接可能不是你想要的第一個鏈接。就我而言,第一個鏈接是登錄Google帳戶。因此,您可能需要對其進行一些驗證,直到您將其打開,例如查看它的href屬性,查看它的文本以查看它是否匹配某些內容等。

另一個觀察結果是,有更簡單的方法可以抓取Google搜索結果並直接使用谷歌API或像這樣的第三方實現:https://pypi.python.org/pypi/googlehttps://pypi.python.org/pypi/google-search

+0

謝謝。這很有幫助。 –

1

據我所知,沒有辦法將Selenium附加到已經運行的瀏覽器。

更重要的是,你爲什麼要這麼做?我能想到的唯一的事情就是如果你想用手動方式設置瀏覽器的某些內容,然後讓Selenium從手動設置狀態做到這一點。如果你希望你的測試儘可能一致地運行,你不應該依賴於一個人以特定的方式設置瀏覽器;腳本應該自己做。

相關問題