2

如果我在 Selenium 上使用 WebDriverWait 功能时等待父标签加载,我可以确保加载子标签吗?

代码示例:

WebDriverWait(self.web_driver, WEB_DRIVER_WAIT_TIME).until(
            EC.presence_of_element_located(By.ID, "test")
)

HTML:

<div id="test">
   <h1>Is this tag also loaded?</h1>
<div>

在这种情况下,当测试标签完成加载时,我想知道是否可以保证h1标签的标签也被加载。

如果没有子标签(示例代码中的h1标签),也就是说,有些页面有称为h1的子标签,有些页面结构相同,但没有称为h1的子标签。

我不喜欢这种延迟,即使我知道如果我将 WebDriverWait 用于我的子标签,就不会有标签。所以,就像上面的问题一样,我打算等待父标签的加载,然后处理它。

正如我所想,如果将 WebDriverWait 应用于父标签并不能保证加载子标签,我该如何实现我想要的目标?

谢谢你的帮助。

4

1 回答 1

2

更多信息将帮助我们构建更规范的答案。但是,就像每个测试都基于一个独特的测试目标一样,每个测试/测试目标的目标元素也必须是唯一的。

因此,如果您的目标元素是<div>您的测试应基于<div>以下内容:

WebDriverWait(self.web_driver, WEB_DRIVER_WAIT_TIME).until(
        EC.presence_of_element_located((By.ID, "test"))
)

万一,您的目标元素是<h1>您的测试应基于<h1>以下内容:

WebDriverWait(self.web_driver, WEB_DRIVER_WAIT_TIME).until(
        EC.presence_of_element_located((By.XPATH, "//div[@id='test']/h1[text()='Is this tag also loaded?']"))
)
于 2020-08-12T07:04:27.043 回答