gpt4 book ai didi

python - Selenium 中未发现可用元素

转载 作者:太空宇宙 更新时间:2023-11-04 02:30:15 25 4
gpt4 key购买 nike

我有一个非常复杂且非公开的 selenium 脚本来执行 GUI 测试。在本地运行测试时一切正常。但是当我在 docker 图像(用于 jenkins)中运行完全相同的测试时,测试不会运行。在网页中找不到元素。

以下是我等待输入框出现并填写一些文本的部分:

    self._handler.log("B")
elem = WebDriverWait(self._handler.webdriver, 30).\
until(EC.visibility_of_element_located((By.XPATH, "//input[@placeholder='Create new collab']"))) # TIMEOUT

self._handler.log("C")
elem.clear()
self._handler.log("D")
elem.send_keys(collab_name)

我在 WebDriverWait 行中收到超时错误。

我在 log 步骤(就在 WebDriverWait 行之前)保存页面源代码,并在 html 中看到以下部分:

 <div class="md-tab container-centered" id="create" style="width: 988px; left: 988px;">
<div class="md-input-container md-theme-default md-input-placeholder md-input-focused">
<label>
Collab Name
</label>
<input class="md-input" placeholder="Create new collab" type="text"/>
<!-- -->
<!-- -->
<!-- -->
</div>

因此该元素在页面源代码中可用,并且也是可见的(如以下步骤“B”中的屏幕截图所示):

enter image description here

这是怎么回事? Selenium 中的错误?

附录

我也试过以下链:

    elem = WebDriverWait(self._handler.webdriver, 30).\
until(EC.presence_of_element_located((By.XPATH, "//div[@id='create']//input")))

actions = ActionChains(self._handler.webdriver)
actions.move_to_element(elem)
actions.send_keys(collab_name)
actions.perform()

但在这种情况下,输入字段未由 collab_name 中的文本填充。输入字段保持为空。

最佳答案

我建议使用 visibility_of_element_located 而不是 presence_of_element_located。两者之间存在细微差别。尽管该元素可能存在,但这并不意味着它也已经可见。

该元素在屏幕打印上可见意味着它在制作此屏幕打印时可见,可能就在异常发生之后。

关于python - Selenium 中未发现可用元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49378987/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com