我不清楚如何在if / else语句中检查特定xpath的存在(我也不确定使用xpaths是否是最佳方法)。
我本质上想做以下事情(列出链接到可能不存在或不完整的搜索结果的URL):
对于每个网址:
我尝试通过定义一个函数来检查xpath的存在并在嵌套的if / else语句中使用它来尝试执行此操作,但是这些返回了错误。
当前代码如下:
检查xpath是否存在的函数(布尔值):
def hasxpath(xpath):
try:
driver.find_element_by_xpath(xpath)
return True
except:
return False
用于处理网址列表的代码:
for url in urls:
driver = webdriver.Chrome(executable_path='/xxx')
driver.get(url)
# Check if search result page exists
if hasxpath('xxx') == True:
# If 'More Info' button exists, click it
if hasxpath('xxx') == True:
driver.find_element_by_xpath('xxx').click()
# For each field, check if it exists and if so collect data
# (example below for 'Name' field)
if hasxpath('xxx') == True:
name = driver.find_element_by_xpath('xxx')
name = name.text
else:
name = ''
driver.close()
else:
driver.close()
else:
driver.close()
当页面不存在时,这似乎仍然不起作用(它抛出错误而不是执行driver.close()。是否有简单的解决方法?或者也许是检查此信息的更好方法和定位数据(而不是使用xpath)?
答案 0 :(得分:0)
您的代码看起来不错。我检查了是否存在Xpath,并关闭了浏览器。请运行我的代码,并对url和xpath进行必要的更改。
const fileData = {
dirName: 'app',
files: ['index.html'],
subDirs: [
{
dirName: 'js',
files: [
'main.js',
'app.js',
'misc.js',
],
subDirs: [
{
dirName: 'vendor',
files: [
'jquery.js',
'underscore.js',
],
subDirs: [],
},
],
},
{
dirName: 'css',
files: [
'reset.css',
'main.css',
],
subDirs: [],
},
],
};