问题描述
我正在尝试使用硒来刮擦网站,但该网站有时会阻止我的IP进行刮擦,并出现一个弹出消息.
Hi I am trying to scrape a website using selenium after sometime the website blocks my ip for scraping and a pop up message appears.
我想做的是,每当出现弹出消息时,它就会在我的终端上显示警告,我的代码看起来像这样以获取结果
What i want to do is that whenever that pop up message appear it displays a warning on my terminal, My code looks like this to get the result
blo = driver.find_element_by_xpath('/html/body/div[2]/div/div/div[1]/h3')
if blo:
print('ip blocked')
else:
print('eroor')
但是它不起作用,我只是得到一个空白屏幕,我该如何解决这个问题
But its not working i just get a blank screen, How can i solve this
元素的HTML:
<h3 class="modal-title">Notifications</h3>
<div class="alert alert-warning">Sorry, you have exceeded the maximum number of queries allowed per day. If you believe you have reached this message in error, please contact our support team.</div>
推荐答案
验证弹出消息的存在,您必须为引入 WebDriverWait visible_of_element_located()
,您可以使用以下任一 Locator策略:
The validate the presence of the pop up message you have to induce WebDriverWait for the visibility_of_element_located()
and you can use either of the following Locator Strategies:
-
使用
CSS_SELECTOR
:
try:
WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "h3.modal-title+div.alert.alert-warning")))
print("ip blocked")
except TimeoutException:
print("eroor")
使用 XPATH
:
try:
WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//h3[@class='modal-title' and text()='Notifications']//following::div[@class='alert alert-warning']")))
print("ip blocked")
except TimeoutException:
print("eroor")
这篇关于在网站硒上显示错误消息时,如何打印消息的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!