从这个链接,我假设首先应该将DOM整体加载到RAM中。
但是后来我在Selenium中测试了超时异常。似乎甚至引发了超时异常,已经可以找到一些元素,因此它不是一个空对象。
但是我想知道,如何确保某些元素已经加载?例如HTML示例,如何确定所有<th>
元素都已加载?鉴于我实际上并不知道<th>
元素的数量。
代码试用:
driver = webdriver.Chrome()
driver.set_page_load_timeout(10)
try:
driver.get(url)
print('load success!')
except TimeoutException:
print(self.page_source)
HTML示例:
<table width="910" border="0" cellpadding="3" cellspacing="0" id="fth1_" class="fth1_" style="display: none; position: fixed; top: 29px; left: 99px;">
<thead style="background-color: rgb(233, 233, 233);">
<tr align="center">
<th id="f13" style="width: 121px;"><a href="t/?i=614&o=1">Symbol</a></th>
<th id="f13" style="width: 267px;"><a href="t/?i=614&o=2">Name</a></th>
</tr>
</thead>
</table>
根据你的代码试验使用的是 ChromeDriver 和 Chrome的浏览器 ,以 自动化
的步骤。配置完后,由于在通过配置set_page_load_timeout(10)
的 时间 内未完全加载页面,因此引发了 超时
异常set_page_load_timeout()
。但是,当您调用print(self.page_source)
了部分呈现的 HTML
DOM
内呈现的元素时,将对其进行检索。
现在关于您的单个查询:
How can I make sure some elements are already loaded?
:理想的 测试用例 将具有确定的步骤,例如,验证元素的存在,验证元素的可见性或验证元素的交互性(单击时)。从这个角度来看,验证 已经加载 的 元素 可能不包含所需的元素。因此,您需要将 搜索标准 范围缩小到某个确定的事物,而不是像这样 更宽泛 的 搜索条件 ,例如
实现这些缩小 搜索条件 可以节省大量的 执行时间 的帮助下
WebDriverWait
与inconjunction
expected_conditions
。
How can I make sure all elements are loaded?
:同样,我们的测试应仅集中在我们需要与之交互的元素上,而忽略验证与我们无关的其他元素的状态/条件。
现在,按照上面提到的两点,这是3种最常用的用 例 :
presence_of_element_located
:检查页面DOM中是否存在元素的期望。这并不一定意味着该元素是可见的。visibility_of_element_located
:期望检查元素是否存在于页面的DOM上并且可见。可见性意味着不仅显示元素,而且其高度和宽度都大于0。element_to_be_clickable
:检查元素的期望是可见的并且已启用,因此您可以单击它。<th>
可见,同时等待诱导 WebDriverWait 的可配置时间,如下所示: **** __ from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
headerList = WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.XPATH, "//table[@class='fth1_' and @id='fth1_']/thead/tr//th")))
注意 :此插图中使用的 xpath 是仅用于演示目的的示例 xpath 。
问题内容: 从这个链接,我假设首先应该将DOM整体加载到RAM中。 OM如何工作/如何加载?(以HTML格式) 但是后来我在Selenium中测试了超时异常。似乎甚至引发了超时异常,已经可以找到一些元素,因此它不是一个空对象。 但是我想知道,如何确保某些元素已经加载?例如HTML示例,如何确定所有元素都已加载?鉴于我实际上并不知道元素的数量。 代码试用: HTML示例: 问题答案: 根据你的代码试
问题内容: 我如何断言页面的CSS已在Watin 2.1中成功加载并应用了其样式? 问题答案: 在进行了一些研究并写下我的答案之后,我偶然发现了该链接,该链接解释了您需要了解的有关CSS的所有信息,何时加载CSS以及如何检查CSS。 实际上,所提供的链接对它的解释很好,以至于我在其中添加了一些引用以供将来参考。 如果您好奇,我的答案将是#2和#4的变体。 何时真正加载样式表? … 顺便说一句,让我
问题内容: 当页面使用AJAX时可以使用隐式和显式等待,但是我想停止由于加载足够的元素而导致的加载。因为调用仅在页面加载完成后才返回,所以可以这样做吗? 问题答案: 是的,可以通过将功能设置为来实现。然后等待一个元素出现并调用以停止加载:
我希望上面的xpath的输出能够定位selenium中的元素,但实际上我得到了错误。
我正在尝试检查用户单击按钮后是否加载了iframe。 我有 顺便说一下,我的iframe是动态创建的。它不会与初始页面加载一起加载。
问题内容: 我可以使用JavaScript检查(与滚动条无关)HTML元素的内容是否溢出?例如,一个长div,具有固定的小尺寸,overflow属性设置为visible,并且元素上没有滚动条。 问题答案: 通常,您可以比较与以便检测到此情况… …但是,当可见溢出时,这些值将相同。因此,检测程序必须考虑到这一点: 在FF3,FF40.0.2,IE6,Chrome 0.2.149.30中进行了测试。