Selenium中动态变量拼接定位元素失效问题求助
Selenium动态循环定位问题及解决办法
问题现象
静态定位代码可正常运行:
monday_div = driver.find_element(By.XPATH, '//*[@id="GXPMonday"]')
但使用动态变量循环定位的代码执行失败:
weekdays = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'] for day in weekdays: main_day_div = driver.find_elements(By.XPATH, '//*[@id="GXP' + day + '"]')
报错信息:
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id="GXPMonday"]
解决方案
最终可行的代码如下:
weekdays = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'] main_day_div_list = [] all_div_list = [] # 循环定位每一天的父容器并存入列表 for day in weekdays: main_day_divs = driver.find_element(By.XPATH, '//*[@id="GXP' + day + '"]') main_day_div_list.append(main_day_divs) # 遍历父容器,获取每个容器下的GXPEntry元素 for element in main_day_div_list: entries = element.find_elements(By.CLASS_NAME,"GXPEntry") all_div_list.extend(entries)
内容的提问来源于stack exchange,提问作者Orest Tokovenko
相关产品推荐
相关产品推荐

