【发布时间】:2019-03-16 01:32:50
【问题描述】:
我正在使用 selenium 循环遍历 txt 文件中的 URL,并获取每个 URL 上列出的特定序列号。然后我想引用一个excel文件并找到序列号旁边的单元格并打印该值。
我的问题是当我将序列号存储在变量中时,它在我的 if 语句中不起作用。如果我用实际序列号替换变量,它会按预期运行。为什么存储的变量在我的代码中不起作用?
这是我的预期代码,我没有收到任何输出:
with open('Url.txt') as links:
for line in links:
time.sleep(3)
driver.get(line)
editpage = driver.find_elements_by_link_text('Edit this device')
for page in editpage:
time.sleep(1)
editurl = page.get_attribute('href')
driver.get(editurl)
Devicesn = driver.find_elements_by_id('device.name')
for sn in Devicesn:
serialnumber = sn.get_property('value')
wb = xlrd.open_workbook('C:\doc.xls')
for sheet in wb.sheets():
for row_num in range(sheet.nrows):
row_value = sheet.row_values(row_num)
if row_value[1] == serialnumber:
print(row_value[0])
如果我用数字替换序列号,我会得到我正在寻找的单元格值:
with open('Url.txt') as links:
for line in links:
time.sleep(3)
driver.get(line)
editpage = driver.find_elements_by_link_text('Edit this device')
for page in editpage:
time.sleep(1)
editurl = page.get_attribute('href')
driver.get(editurl)
Devicesn = driver.find_elements_by_id('device.name')
for sn in Devicesn:
serialnumber = sn.get_property('value')
wb = xlrd.open_workbook('C:\doc.xls')
for sheet in wb.sheets():
for row_num in range(sheet.nrows):
row_value = sheet.row_values(row_num)
if row_value[1] == 6216295237: #replaced serialnumber
print(row_value[0])
这给了我我的预期价值。为什么我的序列号变量在这里不起作用?谢谢!
编辑:谢谢大家的回复。为了希望帮助这更有意义,我打印了序列号变量和它的长度。
serialnumber = sn.get_property('value')
wb = xlrd.open_workbook('C:\doc.xls')
for sheet in wb.sheets():
for row_num in range(sheet.nrows):
row_value = sheet.row_values(row_num)
print(serialnumber)
print(len(serialnumber))
time.sleep(60)
if row_value[1] == serialnumber:
print(row_value[0])
输出为:6216295237 10
VS
#serialnumber = sn.get_property('value')
wb = xlrd.open_workbook('C:\doc.xls')
for sheet in wb.sheets():
for row_num in range(sheet.nrows):
row_value = sheet.row_values(row_num)
if row_value[1] == 6216295237:
print(row_value[0])
输出为:G47
【问题讨论】:
-
变量
serialnumber的值是多少?使用前有没有试过打印? -
it is not working in my if statement是什么意思?程序是否因错误而崩溃?或者只是不打印任何东西? -
@DYZ - 感谢您的回复!我在编辑中打印了变量。希望这是有道理的!
-
sn.get_property返回的值是一个字符串。在比较之前必须将其转换为数字 -
@DYZ - 就是这样!谢谢。
标签: python pycharm xlrd python-3.7