我試圖禁用的AdBlock只有特定的網站後,但我無法找到一個方法來做到這一點。我試圖尋找selenium documentation,但是我找不到任何方法來關閉擴展。不過,我在閱讀文檔方面還很新,所以我可能錯過了一些東西。我也嘗試通過使用硒自動化禁用AdBlock擴展,但它不起作用。計劃是去chrome的擴展部分(chrome:// extensions /),獲取「enabled」複選框,然後在沒有我的介入的情況下單擊它。這是我的嘗試:Python的 - 如何禁用擴展,打開瀏覽器窗口,硒
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import StaleElementReferenceException
def main():
opening = True
while opening:
try:
chrome_options = Options()
#Path to AdBlock
chrome_options.add_extension('/usr/local/bin/AdBlock_v.crx')
driver = webdriver.Chrome(chrome_options=chrome_options)
except:
print('An unkown error has occured. Trying again...')
else:
opening = False
disable_adblocker(driver)
def click_element(driver, xpath, index):
getting = True
not_found_times = 0
while getting:
try:
getting = False
element = WebDriverWait(driver, 5).until(
EC.presence_of_all_elements_located((By.XPATH,xpath)))[index]
element.click()
#driver.get(element.get_attribute("href"))
#In case the page does not load properly
except TimeoutException:
not_found_times += 1
if not_found_times < 2:
driver.refresh()
getting = True
else:
raise
#In case DOM updates which makes elements stale
except StaleElementReferenceException:
getting = True
def disable_adblocker(driver):
driver.get('chrome://extensions')
ad_blocker_xpath = '//div[@id="gighmmpiobklfepjocnamgkkbiglidom"]//div[@class="enable-controls"]//input'
click_element(driver,ad_blocker_xpath,0)
print('')
main()
我嘗試失敗的原因是因爲硒不能使用我指定的xpath來獲取複選框元素。我相信這條道路是正確的。一個用的AdBlock和另一個沒有的AdBlock:
,我能想到的是創建兩個Chrome瀏覽器窗口的唯一解決方案。但是,我不想要兩個窗口,因爲這會讓事情變得更加複雜。