当前位置: 首页 > 知识库问答 >
问题:

用Selenium查找嵌套动态生成的元素

翟淇
2023-03-14

我正在使用Selenium和Chrome驱动程序,但我无法通过ID找到元素。但是,该元素在浏览器的web检查器中是可见的。我认为这是因为元素是动态生成的(我在浏览器URL栏中看到的所有时间都是相同的URL,但是内容是动态变化的。

解决的方法是适当的下砂驱动等。第一个页面是登录页面,我可以成功地通过它:

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
delay = 5

username = driver.find_element_by_name('Username')
password = driver.find_element_by_name('Password')
username.send_keys('my_username')
password.send_keys('my_password')
login = driver.find_element_by_id('login_button')
login.click()
button_a = driver.find_element_by_id('button_a')
button_a.click()
WebDriverWait(driver, delay).until(
    EC.presence_of_element_located(
        driver.find_element_by_id('button_b')))
selenium.common.exceptions.NoSuchElementException: Message: no such element:     Unable to locate element: {"method":"id","selector":"button_b"}

对不起,我只是网络浏览器自动化方面的一个十足的noob。

共有1个答案

韩嘉胜
2023-03-14

实际上你错了,你要找到元素,然后使用wait for webelement。您应该尝试使用By locator,如下所示:-

button_a = driver.find_element_by_id('button_a')
button_a.click()
button_b = WebDriverWait(driver, delay).until(EC.presence_of_element_located((By.ID, 'button_b')))
 类似资料:
  • 问题内容: 我正在为旧应用程序编写测试,该应用程序的主文档中包含一个iFrame,然后在其中包含另一个iFrame。因此,层次结构为: 这是我的代码(我正在使用C#) 问题是,我无法达到第二级iFrame,即contentIFrame 有任何想法吗? 问题答案: 我目前正在类似的网站上进行测试。(主文档中的嵌套iframe) 似乎您没有使用Api中提供的 帧切换方法 。这可能是问题所在。 这是我在

  • 我正在使用Selenium来自动化一些测试。我对硒有点陌生。因此,我试图验证一个表单。有些字段带有星号,表示必填字段。我目前正在遍历所有可见字段,然后检查前面的元素是否有标签。我还需要检查标签是否有星级。我不太擅长这个xpath的东西,所以任何帮助都将不胜感激。 还有我的HTML结构,其中一些结构有星形类,而另一些没有:

  • 我正在为以下代码编写selenium脚本。 这些是如下所示的复选框。复选框的数量将根据数据库值进行更改。 在我的代码中,我首先检查是否选中了“Frau”复选框。所以我试着按照这个片段。 但是当我试图执行这个脚本时<代码>WebElement div=父级。findElement(By.xpath(“前面的同级:::div”)给我第一个div标记,而不是前一个。我想要一个兄弟姐妹。

  • 我有一个GraphQL服务器,它能够为指定源提供timeseries数据(例如,传感器数据)。获取传感器数据的示例查询可能是: 在我的前端,我想允许用户选择一个或多个源,并显示一个图表,每一个都有一行。通过使用下面这样的查询,似乎可以实现以下操作: 大多数GraphQL教程似乎关注于静态查询(例如,唯一改变的是变量,而不是请求的实际形状)--但在我的例子中,我需要查询本身是动态的(为我选择的每个I

  • 如何使用JAXB生成以下结构?在我的例子中,我有一个动态属性列表,它可能有3种类型:整数、字符串或列表。但是,列表属性具有嵌套元素。我怎样才能做到这一点?

  • 我正在寻找一种使用testng和selenium动态获取列值的方法。我有2个表用于显示帐户详细信息,例如帐户id、帐户名称、余额、可用余额。表1是 我想要一个方法,它将接受帐户id作为参数(例如:id2),