我在使用 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/