尝试访问某些URL时遇到问题,它们随机不加载,并且页面标题在浏览器中显示为“ No Title”,并且在print()上不显示任何内容并正确加载它们需要刷新。
我正在尝试以某种方式检测这些页面,以便可以刷新和访问它们,这是到目前为止我尝试过的一些示例:
def no_title():
sleep(3)
if not driver.title:
print('Sem Titulo')
driver.refresh()
sleep(2)
else:
pass
def no_title():
sleep(3)
if driver.execute_script("return document.documentElement.outerHTML") == '<html><head></head><body></body></html>':
print('Sem Titulo')
driver.refresh()
sleep(2)
else:
pass
def no_title():
sleep(3)
if driver.title == 'Sem título':
print('Sem Titulo')
driver.refresh()
sleep(2)
else:
pass
由于我几乎处于死胡同,我希望有人能提供帮助!预先感谢。
编辑:这是浏览器/测试页上显示的图片:https://i.imgur.com/s9zMtRK.png
答案 0 :(得分:0)
首先获取页面标题,然后将其存储在如下所示的变量中:
someTitle = str(driver.title)
然后strip()它,strip()将删除前导,尾随空格并检查是否有空引号或无,如下所示:
if someTitle.strip()=='' or someTitle.strip()==None:
您下面更新的方法将标识“无标题”页面:
def no_title():
sleep(3)
someTitle = str(driver.title)
if someTitle.strip()=='' or someTitle.strip()==None:
print('Sem Titulo')
driver.refresh()
sleep(2)
else:
pass
如果您的页面没有刷新,则可以尝试以下代码,该代码将首先获取当前网址,然后它将尝试再次启动它:
def no_title():
sleep(3)
someTitle = str(driver.title)
if someTitle.strip()=='' or someTitle.strip()==None:
print('Sem Titulo')
currentURL = driver.current_url
print(currentURL)
driver.get(currentURL)
sleep(2)
else:
pass
如果您打开了多个窗口/选项卡,则需要切换到特定的选项卡以使用Windows手柄刷新它,请尝试以下代码:
def no_title():
sleep(3)
someTitle = str(driver.title)
if someTitle.strip()=='' or someTitle.strip()==None:
print('Sem Titulo')
current = driver.current_window_handle
handles = driver.window_handles
for handle in handles:
if handle != current:
driver.switch_to_window(handle)
driver.refresh()
driver.switch_to_window(current)
sleep(2)
else:
pass
或者您可以尝试以下方法:
def no_title():
sleep(3)
print('Sem Titulo')
current = driver.current_window_handle
handles = driver.window_handles
for handle in handles:
driver.switch_to_window(handle)
someTitle = str(driver.title)
if someTitle.strip()=='' or someTitle.strip()==None:
driver.refresh()
driver.switch_to_window(current)
sleep(2)
else:
pass
答案 1 :(得分:0)
经过一连串的试验最终解决了这个问题,实际上,由于我使用了许多版本的chrome和驱动程序进行了测试,因此使用的浏览器实际上是一个问题。
可用的浏览器是Opera / operadriver,以下是在Opera中发生无标题时实际起作用的功能:
def no_title():
sleep(2)
doc_request = driver.execute_script("return document.documentElement.outerHTML")
if doc_request == '<html><head></head><body></body></html>':
driver.refresh()
sleep(2)
else:
pass