Python:For 循环提前中断 - 为什么?
Python: For Loop breaks to early - Why?
我希望我的代码(见下文)为每个断点截取 5 个屏幕截图。但是在从断点 1280 截取 3 个屏幕截图后,它开始从下一个断点截取屏幕截图。
我做错了什么或错过了什么?
#!/bin/sh
from datetime import datetime
from selenium import webdriver
from pyvirtualdisplay import Display
import time
from selenium.webdriver.chrome.options import Options
now = datetime.now().strftime('%d-%m-%Y_%H-%M-%S')
Breakpoint_1280 = 0
Breakpoint_768 = 0
Breakpoint_320 = 0
# Set Breakpoint for different View
Breakpoints = [1280, 768, 320]
for points in Breakpoints:
display = Display(visible=0, size=(points, 800))
display.start()
driver = webdriver.Chrome('/usr/local/bin/chromedriver')
driver.set_page_load_timeout(30)
driver.get('https://www.example.com')
driver.maximize_window()
# Taking Screnshoot in different Breakpoints
if points == 1280:
for a in Breakpoints:
Breakpoint_1280 += 1
print ("Taking %s. Screenshot for Breakpoint 1280" %(Breakpoint_1280))
driver.get_screenshot_as_file('Breakpoint_1280_Snap%s_%s.png' %(Breakpoint_1280, now))
time.sleep(10)
if Breakpoint_1280 == 5:
break
elif points == 768:
for b in Breakpoints:
Breakpoint_768 += 1
print ("Taking %s. Screenshot for Breakpoint 768" %(Breakpoint_768))
driver.get_screenshot_as_file('Breakpoint_768_Snap%s_%s.png' %(Breakpoint_768, now))
time.sleep(10)
if Breakpoint_768 == 5:
break
else:
for c in Breakpoints:
Breakpoint_320 += 1
print ("Taking %s. Screenshot for Breakpoint 320" %(Breakpoint_320))
driver.get_screenshot_as_file('Breakpoint_320_Snap%s_%s.png' %(Breakpoint_320, now))
time.sleep(10)
if Breakpoint_320 == 5:
break
display.stop()
希望有人能帮助我..非常感谢:)
你的循环应该是这样的:
for i in range(0, 5):
.
.
使用范围为 5 的 for 循环来完成您的工作。
`对于范围 (5) 中的 a:
做点什么
对于范围 (5) 中的 b:
做点什么
对于范围 (5) 中的 c:
做一点事
`
如评论所述,您正在迭代 Breakpoints
,它只有三个元素,因此您有三个屏幕截图。您应该改为使用 for
循环来创建 5 个镜头。
您还可以通过在打印语句和文件名中使用 points
的值来大大简化代码:
from selenium.webdriver.chrome.options import Options
now = datetime.now().strftime('%d-%m-%Y_%H-%M-%S')
# Set Breakpoint for different View
Breakpoints = [1280, 768, 320]
for points in Breakpoints:
display = Display(visible=0, size=(points, 800))
display.start()
driver = webdriver.Chrome('/usr/local/bin/chromedriver')
driver.set_page_load_timeout(30)
driver.get('https://www.example.com')
driver.maximize_window()
# Taking Screnshoot in different Breakpoints
for i in range(5):
print ('Taking {}. Screenshot for Breakpoint {}'.format(i, points))
driver.get_screenshot_as_file('Breakpoint_{}_Snap{}_{}.png'.format(points, i, now))
time.sleep(10)
display.stop()
请注意,我还使用了更新的 format()
字符串格式设置方法。
我希望我的代码(见下文)为每个断点截取 5 个屏幕截图。但是在从断点 1280 截取 3 个屏幕截图后,它开始从下一个断点截取屏幕截图。
我做错了什么或错过了什么?
#!/bin/sh
from datetime import datetime
from selenium import webdriver
from pyvirtualdisplay import Display
import time
from selenium.webdriver.chrome.options import Options
now = datetime.now().strftime('%d-%m-%Y_%H-%M-%S')
Breakpoint_1280 = 0
Breakpoint_768 = 0
Breakpoint_320 = 0
# Set Breakpoint for different View
Breakpoints = [1280, 768, 320]
for points in Breakpoints:
display = Display(visible=0, size=(points, 800))
display.start()
driver = webdriver.Chrome('/usr/local/bin/chromedriver')
driver.set_page_load_timeout(30)
driver.get('https://www.example.com')
driver.maximize_window()
# Taking Screnshoot in different Breakpoints
if points == 1280:
for a in Breakpoints:
Breakpoint_1280 += 1
print ("Taking %s. Screenshot for Breakpoint 1280" %(Breakpoint_1280))
driver.get_screenshot_as_file('Breakpoint_1280_Snap%s_%s.png' %(Breakpoint_1280, now))
time.sleep(10)
if Breakpoint_1280 == 5:
break
elif points == 768:
for b in Breakpoints:
Breakpoint_768 += 1
print ("Taking %s. Screenshot for Breakpoint 768" %(Breakpoint_768))
driver.get_screenshot_as_file('Breakpoint_768_Snap%s_%s.png' %(Breakpoint_768, now))
time.sleep(10)
if Breakpoint_768 == 5:
break
else:
for c in Breakpoints:
Breakpoint_320 += 1
print ("Taking %s. Screenshot for Breakpoint 320" %(Breakpoint_320))
driver.get_screenshot_as_file('Breakpoint_320_Snap%s_%s.png' %(Breakpoint_320, now))
time.sleep(10)
if Breakpoint_320 == 5:
break
display.stop()
希望有人能帮助我..非常感谢:)
你的循环应该是这样的:
for i in range(0, 5):
.
.
使用范围为 5 的 for 循环来完成您的工作。
`对于范围 (5) 中的 a: 做点什么
对于范围 (5) 中的 b: 做点什么
对于范围 (5) 中的 c: 做一点事 `
如评论所述,您正在迭代 Breakpoints
,它只有三个元素,因此您有三个屏幕截图。您应该改为使用 for
循环来创建 5 个镜头。
您还可以通过在打印语句和文件名中使用 points
的值来大大简化代码:
from selenium.webdriver.chrome.options import Options
now = datetime.now().strftime('%d-%m-%Y_%H-%M-%S')
# Set Breakpoint for different View
Breakpoints = [1280, 768, 320]
for points in Breakpoints:
display = Display(visible=0, size=(points, 800))
display.start()
driver = webdriver.Chrome('/usr/local/bin/chromedriver')
driver.set_page_load_timeout(30)
driver.get('https://www.example.com')
driver.maximize_window()
# Taking Screnshoot in different Breakpoints
for i in range(5):
print ('Taking {}. Screenshot for Breakpoint {}'.format(i, points))
driver.get_screenshot_as_file('Breakpoint_{}_Snap{}_{}.png'.format(points, i, now))
time.sleep(10)
display.stop()
请注意,我还使用了更新的 format()
字符串格式设置方法。