中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在selenium中設置瀏覽器為headless無頭模式

發布時間:2021-01-08 14:44:24 來源:億速云 閱讀:1456 作者:Leah 欄目:開發技術

怎么在selenium中設置瀏覽器為headless無頭模式?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

新版本的selenium已經明確警告將不支持PhantomJS,建議使用headless的Chrome或FireFox。

兩者使用方式非常類似,基本步驟為:

  • 下載驅動

  • 創建選項,設定headless

  • 創建WebDriver,指定驅動位置和選項

  • 對URL發起請求,獲得結果,進行解析

Chrome

驅動的下載路徑為:https://chromedriver.storage.googleapis.com/index.html

接下來創建選項并設定headless:

options = webdriver.ChromeOptions()
options.set_headless()

創建WebDriver,指定驅動位置和選項:

driver = webdriver.Chrome(
  'D://chromedriver_win32//chromedriver', chrome_options=options)

發起請求,獲得結果并進行解析:

driver.get('http://www.sohu.com/')
time.sleep(3)
print(driver.page_source)
driver.close()

Firefox

驅動的下載路徑為:https://github.com/mozilla/geckodriver

啟動的步驟與Chrome一致,只不過使用的選項對象和創建的WebDriver對象略有不同。直接上源代碼:

options = webdriver.FirefoxOptions()
options.set_headless()
driver = webdriver.Firefox(
  firefox_options=options,
  executable_path='D:/geckodriver-win64/geckodriver')
driver.get('http://www.sohu.com/')
time.sleep(3)
print(driver.page_source)
driver.close()

 SELENIUM使用HEADLESS無頭模式實現無界面運行

先導包:

from selenium.webdriver.chrome.options import Options

加入如下配置:

chrome_options = Options()

chrome_options.add_argument('--window-size=1920,1080')   # 設置窗口界面大小

chrome_options.add_argument('--headless')

driver = webdriver.Chrome(chrome_options=chrome_options)

參考代碼:

from selenium import webdriver
import time
import multiprocessing
from selenium.webdriver.chrome.options import Options



class Zutuan():
  def __init__(self):
    """打開瀏覽器"""
    self.chrome_options = Options()
    self.chrome_options.add_argument('--window-size=1920,1080')
    self.chrome_options.add_argument('--headless')
    self.driver = webdriver.Chrome(chrome_options=self.chrome_options)

  def open_zutuan(self, url):
    """傳入組團url"""
    self.driver.get(url)
    #self.driver.maximize_window()
    self.driver.refresh()
    #time.sleep(0.01)
    self.driver.implicitly_wait(30)    # todo implicitly隱式等待,等待元素可見

  def option_element(self, user, password):
    """xpath定位元素"""
    self.driver.find_element_by_xpath('//div[@class="login a"]/i').click()
    time.sleep(0.01)
    self.driver.find_element_by_xpath('//div[@class="a-title"]').click()
    self.driver.find_element_by_xpath('//input[@type="text" or @class="userName"]').send_keys(user)
    self.driver.find_element_by_xpath('//input[@type="password"]').send_keys(password)
    self.driver.find_element_by_xpath('//div[@class="button"]').click()
    time.sleep(1)
    self.driver.refresh()


  def select_commodity(self, content):
    """搜索組團商品"""
    # TODO self.content實例屬性傳給下面的方法使用,如果想把值給下面的方法用,添加實例屬性解決
    self.content = content
    self.driver.find_element_by_xpath('//input[@type="text"]').send_keys(content)
    self.driver.find_element_by_xpath('//div[@class="search"]').click()
    self.driver.refresh()
    #return content

  def result(self):
    """判斷搜索商品成功后的提示信息,斷言頁面是否成功"""
    if self.content in self.driver.page_source:
      #print(self.content)
      print('商品搜索成功,測試通過')
    else:
      print('商品搜索錯誤,測試失敗')

  def closed(self):
    """關閉瀏覽器"""
    time.sleep(1)
    self.driver.quit()


def run1():
  # TODO 根據操作順序,調用方法執行
  zt = Zutuan()
  zt.open_zutuan('http://www.zutuan.cn/index.html#/')
  zt.option_element('1489088761@qq.com', 'mg123456')
  zt.select_commodity('香蕉')
  zt.result()
  zt.closed()


class View_details(Zutuan):
  """把商品添加為明星單品,"""
  def check_commodity(self, number):
    """進入商品詳情頁,點擊添加明星單品"""
    self.driver.find_element_by_xpath('//a[@target="_blank"]/img').click()
    self.driver.switch_to.window(self.driver.window_handles[1])
    self.driver.find_element_by_xpath('//div[@class="child start"]').click()
    self.driver.find_element_by_xpath('//div[@class="el-dialog__body"]//input[@type="text"]').send_keys(number)
    self.driver.find_element_by_xpath('//button[@type="button" and @class="el-button el-button--danger"]').click()
    time.sleep(1)

  def result(self):
    """重寫父類方法,判斷商品添加成功后的提示信息,斷言頁面是否成功"""
    if '添加成功' in self.driver.page_source:
      print('商品添加成功,測試通過')
    else:
      print('商品添加失敗,測試失敗')
    # 調用父類方法關閉
    super().closed()


def run2():
  vd = View_details()
  vd.open_zutuan('http://www.zutuan.cn/index.html#/')
  vd.option_element('1489088761@qq.com', 'mg123456')
  vd.select_commodity('蘋果')
  vd.check_commodity(91628)
  vd.result()


def main():
  p1 = multiprocessing.Process(target=run1)
  p2 = multiprocessing.Process(target=run2)

  p1.start()
  p2.start()


if __name__ == '__main__':
  main()

看完上述內容,你們掌握怎么在selenium中設置瀏覽器為headless無頭模式的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

东至县| 尼勒克县| 古田县| 灵璧县| 延长县| 滦南县| 西藏| 禄丰县| 隆德县| 崇仁县| 北川| 张家川| 吉安市| 定陶县| 青浦区| 汉中市| 保德县| 怀化市| 兴业县| 苗栗县| 阿拉尔市| 乐陵市| 大冶市| 山丹县| 仙游县| 平塘县| 桃园县| 屯门区| 隆子县| 三穗县| 崇左市| 博爱县| 武义县| 长白| 册亨县| 绩溪县| 武乡县| 古交市| 威信县| 沙洋县| 米泉市|