首先,对不起,因为英语不是我的母语。 我是Python + Selenium的初学者(大约5天)。 我发现了一些类似的问题,但没有一个对我有帮助(这是我最后的资源,因为我正在寻找解决方案大约两天)。 这也是我第一次在这里发布。 我正在自动执行一项任务,需要跟踪具有多个配置文件的页面,并且工作正常。但是,如果有人阻止了我,则会出现一个弹出窗口,说他们无法执行该操作或类似的操作。我想知道如何避免这些随机弹出窗口停止我的代码。
我注意到我可以使用代码停止显示图像
chrome_prefs["profile.default_content_settings"] = {"images": 2}
chrome_prefs["profile.managed_default_content_settings"] = {"images": 2}
所以我尝试使用:
chrome_prefs["profile.default_content_settings"] = { "popups": 2 }
它也不起作用(或者是错误的,我不知道)。
我注意到,单击被阻止的配置文件后,代码仍在继续运行,唯一阻止其运行的是弹出窗口。我希望我能阻止它们出现或类似的东西。
from selenium import webdriver
import os
import time
option = webdriver.ChromeOptions()
chrome_prefs = {}
option.experimental_options[*"prefs"*] = chrome_prefs
chrome_prefs["profile.default_content_settings"] = {"images": 2}
chrome_prefs["profile.managed_default_content_settings"] = {"images": 2}
chrome_prefs["profile.default_content_settings"] = { "popups": 2 }
driver = webdriver.Chrome(chrome_options=option)
driver.get('https://www.spiritfanfiction.com/login')
driver.find_element_by_xpath("//*[@id='Usuario']").send_keys("######")
driver.find_element_by_xpath("//*[@title='Senha']").send_keys("#########")
driver.find_element_by_xpath("//*[@class='btn btn-primary']").send_keys("#########")
driver.find_element_by_xpath("//*[@class='btn btn-primary']").click()
LinkDoPerfil = driver.get('https://www.spiritfanfiction.com/perfil/vampyxz/seguindo?pagina=12')
x = 1
while True:
transactionElements = driver.find_elements_by_xpath("//*[@id='botaoSeguir'][@data-seguindo='false']")
for element in transactionElements:
element.click()
time.sleep(2)
driver.find_element_by_xpath("//*[@class='fa fa-caret-left']").click()
x += 1
答案 0 :(得分:0)
我处理硒中“无法控制的”错误的方式是将可能返回错误的代码放入try和except块中。这样,即使以为遇到错误,仍然可以继续运行代码。
while True:
transactionElements = driver.find_elements_by_xpath("//*[@id='botaoSeguir'][@data-seguindo='false']")
for element in transactionElements:
try:
element.click()
except:
"""Do something else such as move onto the next element"""
time.sleep(2)
driver.find_element_by_xpath("//*[@class='fa fa-caret-left']").click()
x += 1
答案 1 :(得分:0)
修改:
尝试在每次页面加载后使用javascript接受警报。
driver.execute_script("window.alert = function () { return true}")
尝试一下
x = 1
while x<12:
driver.execute_script("window.alert = function () { return true}")
transactionElements = driver.find_elements_by_xpath("//*[@id='botaoSeguir'][@data-seguindo='false']")
for element in transactionElements:
element.click()
time.sleep(2)
driver.find_element_by_xpath("//*[@class='fa fa-caret-left']").click()
x += 1