如何使用Selenium从没有value属性的输入中获取文本?问题是,当页面加载并且文本没有出现在html上时,它们会自动填充(可能使用JavaScript),因此我找不到任何代表它的内容。
答案 0 :(得分:0)
文本在框中后,您可以使用WebElement.get_attribute('value')
访问该文本,其中WebElement
是您要从中提取文字的文本框。
答案 1 :(得分:0)
您可以实施自己的预期条件。以下作品
的HTML / JS:
<html>
<head>
<script type="text/javascript" >
window.onload = function(){
document.getElementById("string").value = "hello";
};
</script>
</head>
<body>
<input id="string" type="text" value="">
</body>
</html>
蟒:
import re
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.common.exceptions import StaleElementReferenceException
from selenium.webdriver.support import expected_conditions as EC
class regex_to_be_present_in_element_value(object):
def __init__(self, locator, regex):
self.locator = locator
self.regex = regex
def __call__(self, driver):
try:
element_text = EC._find_element(driver,
self.locator).get_attribute("value")
if element_text:
return re.match(self.regex, element_text)
else:
return False
except StaleElementReferenceException:
return False
driver = webdriver.Firefox()
driver.get("file:///path/to/the/htmlfile.html")
try:
element = WebDriverWait(driver, 10).until(
regex_to_be_present_in_element_value((By.ID, "string"), "he*")
)
finally:
driver.quit()
它只是等待,直到指定元素的value属性中的文本与传递给构造函数的正则表达式字符串生成的正则表达式匹配,在本例中只是“hello”。 “他*”匹配“你好”。
答案 2 :(得分:0)
使用名为win32clipboard的模块,它是pywin32的一部分,解决了我的问题。
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import win32clipboard
element.send_keys(Keys.CONTROL, 'a') #highlight all in box
element.send_keys(Keys.CONTROL, 'c') #copy
win32clipboard.OpenClipboard()
text = win32clipboard.GetClipboardData() #paste
win32clipboard.CloseClipboard()
print text