在另一个元素中查找元素似乎无法正常工作。
我有一个表,如果行中的某些单元格为空,我想通过该表进行迭代和更新记录。我正在获取要迭代的网络元素列表。
它正确遍历了我通过使用print语句确认的行。在每一行的内部,我要检查某些单元格是否为空,并进行更新。
for _ in range(len(total_records_to_update)):
for record in self.driver.find_elements(*XPATH):
try:
WebDriverWait(self.driver, 3).until(
lambda d: record.find_element_by_xpath('//td[10][normalize-space(.)="' + text_in_cell + '"]')
)
print("Cell is not empty, checking next one")
continue
except TimeoutException:
update_record()
break # page is refreshed, hence the outer loop
此代码仅更新第一个记录,并跳过其余记录。我看到这些记录已被迭代,但是WebDriverWait立即返回True。我还尝试了以下相同的结果:
WebDriverWait(record, 3).until(
EC.presence_of_element_located((
By.XPATH,
"//td[10][normalize-space(.)='" + text_in_cell + "']"
))
)
答案 0 :(得分:1)
通过使用双斜杠//
,您选择的元素是从根开始的,要选择当前子元素td
,请尝试使用./
或./td[10]....