首页 > 解决方案 > 元素不可见。raise TimeoutException(message, screen, stacktrace) selenium.common.exceptions.TimeoutException

问题描述

有以下页面。

http://remitly.com/us/en/

您需要选择一个特定的countryclick在其上,但是在计算下一行时,我得到一个错误。

raise TimeoutException(message, screen, stacktrace) selenium.common.exceptions.TimeoutException

select = driver.find_element_by_class_name('f1wrnyr7')
select.click()
element = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//span[contains(@class, 'md_countryName_fdxiah8') and text()='Colombia']")))
element.click()

标签: pythonseleniumwebdriverwait

解决方案


引发异常是因为您的代码能够在 DOM 中找到该元素,但该元素在页面上不可见。此外, 的父divspan包含一个名为 的属性hidden。以下是DOM结构

<div hidden="">
<div class="f1g5w0oh">
<div class="rm-container">
<div class="rm-row">
<div class="rm-col-sm-12 order-sm-last">
<div class="f1o6pohl">
<h5 class="foyw123">Send Money To</h5>
<div class="rm-row fywghj7">
<div class="rm-col-md-6 rm-col-lg-4 fhdzg5g">
<div class="rm-col-md-6 rm-col-lg-4 fhdzg5g">
<div class="rm-col-md-6 rm-col-lg-4 fhdzg5g">
<div class="rm-col-md-6 rm-col-lg-4 fhdzg5g">
<div class="rm-col-md-6 rm-col-lg-4 fhdzg5g">
<div class="rm-col-md-6 rm-col-lg-4 fhdzg5g">
<div class="rm-col-md-6 rm-col-lg-4 fhdzg5g">
<div>
<a class="f12qs1j9" href="/us/en/colombia">
<span>
<img class="md_flag_ffypto0" src="https://media.remitly.io/COL_32x21@2x-471f08f81b303eb2d3ac61da0909673f.png" alt="Colombia"/>
<span class="md_countryName_fdxiah8">Colombia</span>
</span>

最好的方法是手动重现这些步骤,并了解使元素可见所需的步骤顺序。


推荐阅读