【发布时间】:2021-05-24 14:07:24
【问题描述】:
我正在使用 selenium 进行 Web 自动化,我需要使用 xpath 找到一个元素。这本身不是问题,但代码需要运行多次,并且当它运行时,HTML xpath 会发生变化。这也不是问题。我每次都使用简单的数学来获取新的 xpath。
xpath 看起来像这样
1. run: '//*[@id="input-text-3"]'
2. run: '//*[@id="input-text-5"]'
3. run: '//*[@id="input-text-7"]' etc.
我用这段代码解决了这个问题:
y = 1
#Corme browser already defined and on website
while True:
mathop1 = y*2 + 1
xxpath = ""'//*[@id="input-text-' + str(mathop1) + '"]'""
xxpath1 = "'" + str(xxpath) + "'"
print(xxpath1)
Bezeichnung = driver.find_element_by_xpath(xxpath1)
Bezeichnung.send_keys(file1name)
y = y + 1
这样做的目的是每次程序循环时都会更新 y,因此 xpath 将是正确的。我尝试使用 xxpath1 的输出来像往常一样查找元素,它工作正常,但是一旦我使用该变量,它就不起作用了。具体来说,问题是我不能使用这个变量。
Bezeichnung = driver.find_element_by_xpath(xxpath1)
为什么这不起作用?
【问题讨论】:
-
“我不能使用这个变量”——你到底是什么意思?你有什么错误吗?
-
是的,我收到错误,但变量已定义
-
错误说明了什么?
-
我特别收到此错误:文件“c:/Users/bodig/Desktop/Advanced adlo builder.py”,第 303 行,在
Bezeichnung = driver.find_element_by_xpath(xxpath1) -
还有这个:TypeError: Failed to execute 'evaluate' on 'Document': 结果不是节点集,因此无法转换为所需的类型。