使用Selenium Python遍历Webelements

时间:2019-11-21 15:43:05

标签: python selenium selenium-webdriver selenium-chromedriver

我目前正在尝试使用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()参数必须是可迭代的,而不是WebElement”

由于某种原因,如果我使用以下内容,则.click()将无法工作。 k.find_element_by_tag_name("input").click() 它仅在我使用webdriverwait时有效。每当我需要单击页面上的某些内容时,都必须使用Web驱动程序等待方法。

我的问题是: 复制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)

预先感谢

1 个答案:

答案 0 :(得分:0)

我设法找到了解决方法,并让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"))

它完全按照我的需要做。