javascript - Python Selenium : How to get text generated by JavaScript in input field

标签 javascript python selenium

我在使用 Python 和 Selenium 从网页上的一个表单中的用户名字段获取文本时遇到问题。

从列表中选择用户后,我有一个由 JS 填充的字段:

<select id="users" onchange="checkUser(document.getElementById('configpin'))" ondblclick="document.getElementById('users').size=1; showUser(document.getElementById('configpin'))" onmouseout="document.getElementById('users').size=1" size="1"><option value="1">1 User 1</option>[...]</option></select>

字段:

<input name="name1" value="" type="text" id="name1" onkeyup="checkNameEntry('name1',20)" onchange="checkNameEntry('name1',20)" onkeydown="if(event.keyCode == 13) submitUser(document.getElementById('configpin'));">

我试图让文本显示在该字段中,但它不起作用。 我正在尝试:

uname = driver.find_element_by_id('name1').get_attribute('innerHTML')

并且:

uname = driver.find_element_by_id('name1').text

但在这两种情况下,我从中得到的只是一个空字符串。我希望这是一个常见问题,应该有一些明显的解决方案,但我找不到它。

最佳答案

我对网页源代码进行了更深入的分析,结果发现,JS实际上调用了Ajax,正如我在this thread中读到的那样,您只需使用 .get_attribute('value') 来获取文本。一开始我觉得这很奇怪,因为 html 代码中没有属性“value”,但它确实有效。

关于javascript - Python Selenium : How to get text generated by JavaScript in input field,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30992029/

相关文章:

javascript - 异步比延迟更好吗?

javascript - 如何在 Phaser 中结束状态以及导航回之前的状态

python - 在 wsgi 环境中使用 Uipath 进行标准化不会产生标准化答案

Python:组合和重新排列数组

python - 以同样的方式转换 CSV 文件的文件夹,然后使用 python 输出多个数据帧

python - ModuleNotFoundError : No module named 'webdriver_manager' error even after installing webdrivermanager

java - Selenium在多个浏览器上并行测试(JAVA)

javascript - primefaces 嵌套的 tabview 和选项卡,无法滚动选项卡

javascript - Rack-Cors 并在 500 或 403 错误时发送 header

运行 testng selenium 测试用例时出现 java.lang.ExceptionInInitializerError