python - 使用 selenium Python 循环访问 webelements
问题描述
我目前正在尝试使用 Selenium 和 python 来自动化一个过程,但我遇到了障碍。该列表是位于树下的列表的一部分。我已经使用以下 xpath 确定了树的基础
item = driver.find_element_by_xpath("//*[@id='filter']/ul/li[1]//ul//li")
items = item.find_elements_by_tag_name("li")
我正在尝试遍历“项目”部分,但需要并单击带有“输入”标签的任何内容
for k in items:
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((k.find_element(By.TAG_NAME, "input")))).click()
执行上述操作时,出现以下错误:“TypeError: find_element() argument after * must be an iterable, not WebElement”
出于某种原因,如果我使用类似下面的内容,.click() 将不起作用。
k.find_element_by_tag_name("input").click()
只有当我使用 webdriverwait 时它才有效。每当我需要单击页面上的某些内容时,我都不得不使用网络驱动程序等待方法。
我的问题是:要复制的语法是什么items = item.find_elements_by_tag_name("li")
,WebDriverWait(driver, 10).until(EC.element_to_be_clickable((k.find_element(By.TAG_NAME, "input")))).click()
即如何使用基本路径并使用私有方法附加到find_elements(By.TAG_NAME)
提前致谢
解决方案
我已经设法找到解决方法并让 Selenium 做我需要的事情。我不得不调用 javascript 执行,所以我没有尝试开始
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((k.find_element(By.TAG_NAME, "input")))).click()
工作,而是使用了
driver.execute_script("arguments[0].click();", k.find_element_by_tag_name("input"))
它正在做我需要它做的事情。
推荐阅读
- highcharts - 高图。隐藏时删除系列标签
- java - Firebase 时间戳作为自定义键
- ruby-on-rails - How can I specify Rails I18n locale an attribute translation common for all models?
- python - keras 自定义 ImageDataGenerator
- django - 如何将 django @transaction 装饰器应用于 celery 任务
- algorithm - 从数组中找到领导者
- c++ - 仅获取整数作为输入,代码未按预期工作
- python - 在 Pandas 中访问索引对象的类别代码
- python - 让 Python 检测一个站点是否在 PC 上处于活动状态
- c - C++ 2 嵌套 for 循环转换为递归