javascript - 在 Selenium Python 中选择 Javascript 创建的元素

标签 javascript python python-2.7 selenium beautifulsoup

我在网页中有以下元素。

<button type="submit" class="zsg-button_primary contact-submit-button track-ga-event" data-ga-category="contact" data-ga-action="email" data-ga-label="rentalbuilding" data-ga-event-content="false" data-ga-event-details="" id="yui_3_18_1_2_1482045459111_1278">
   <span class="zsg-loading-spinner hide"></span>
   <span class="button-text" id="yui_3_18_1_2_1482045459111_1277">Contact Property Manager</span>
</button>

我可以使用 Beautifulsoup 找到这个元素:

e = soup.find('button', attrs={'class' : 'zsg-button_primary'})

但是当我尝试使用 Selenium 时:

driver.find_element_by_class_name("zsg-button_primary").click()

我收到以下错误:

selenium.common.exceptions.ElementNotVisibleException: Message: element not visible

我认为这是因为该元素是用 Javascript 创建的,并且正在做一些有趣的事情,但我可以在屏幕上看到它,但我只是不知道如何获取它,所以我可以单击它。欢迎任何帮助。

编辑

我被指向了 this answer这是用于 Selenium Javascript 的。我需要用 Python 来做这件事,任何人都可以提供帮助。

最佳答案

尝试等到您的元素变得可见时执行以下操作:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, '//button[@class="zsg-button_primary contact-submit-button track-ga-event"]')))

关于javascript - 在 Selenium Python 中选择 Javascript 创建的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41206797/

相关文章:

python - PyCharm 找不到已安装的包 : keras

javascript - 错误: not a function (on mounted)

javascript - 获取裁剪线可见区域长度 d3

javascript - Node.js 和 Express 应用程序中的 res.render() 和 ejs.render() 有什么区别

python - 使用python中的正则表达式从字符串中提取不同格式的日期

python - 日期时间 Python - 下一个工作日

Python 字典计数

javascript - 我需要根据 redux 状态用我的通用样式更新文件

python - timedelta 转换为时间或 int 并将其存储在 GAE (python) 数据存储中

python - 在 NLTK 解析器语法中混合单词和 PoS 标签