Javascript 如何断言复制到剪贴板的值是正确的?
在我的步骤中,我单击一个自动复制电子邮件地址的按钮。我如何断言该值是我期望的值?我在想办法把它粘贴到终端上,这样我就能看到它在复制什么,但如果有更有效的方法,我很想知道 我尝试按照其他建议导入pyperclip,但导入不正确 这是单击时复制值的按钮Javascript 如何断言复制到剪贴板的值是正确的?,javascript,selenium,python-behave,Javascript,Selenium,Python Behave,在我的步骤中,我单击一个自动复制电子邮件地址的按钮。我如何断言该值是我期望的值?我在想办法把它粘贴到终端上,这样我就能看到它在复制什么,但如果有更有效的方法,我很想知道 我尝试按照其他建议导入pyperclip,但导入不正确 这是单击时复制值的按钮 @step('I locate the email icon and click') def step_impl(context): window_before = driver.window_handles[0] context.c
@step('I locate the email icon and click')
def step_impl(context):
window_before = driver.window_handles[0]
context.current_element = context.wait.until(
EC.element_to_be_clickable(
(EMAIL_ICON)
)
)
scroll_to_webelement(context.driver, context.current_element)
time.sleep(3)
context.current_element.click()
它会触发操作系统的默认电子邮件以打开第二个窗口,从而将其关闭
@step('I switch to the new window and close it')
def step_impl(context):
context.wait.until(EC.number_of_windows_to_be(2))
context.driver.switch_to.window(context.driver.window_handles[-1])
context.driver.close()
context.driver.switch_to.window(context.driver.window_handles[0])
我希望它能提供我复制的电子邮件,但我尝试的每一步似乎都不起作用。将剪贴板内容存储到一个变量中,并可以像往常一样断言它。 请尝试下面的代码,让我知道这是否有帮助 Python示例 输出:
将剪贴板内容存储到变量中,并可以像往常一样断言它。 请尝试下面的代码,让我知道这是否有帮助 Python示例 输出:
下面是一个如何进行测试的示例。 测试HTML:
<!DOCTYPE html>
<html>
<body>
<input type="text" value="my@email.com" id="mm">
<button onclick="myFunction()">Copy text</button>
<script>
function myFunction() {
var copyText = document.getElementById("mm");
copyText.select();
copyText.setSelectionRange(0, 99999)
document.execCommand("copy");
window.open();
}
</script>
</body>
</html>
下面是一个如何进行测试的示例。 测试HTML:
<!DOCTYPE html>
<html>
<body>
<input type="text" value="my@email.com" id="mm">
<button onclick="myFunction()">Copy text</button>
<script>
function myFunction() {
var copyText = document.getElementById("mm");
copyText.select();
copyText.setSelectionRange(0, 99999)
document.execCommand("copy");
window.open();
}
</script>
</body>
</html>
重新格式化您的问题,将文本放入代码标记中,将代码放入文本标记中从我对这个主题的研究中,大多数web浏览器将不再看到剪贴板或以编程方式粘贴它,由于这是一种安全风险,您可以将剪贴板写入文本文件,并将其与预期值进行比较。您还可以将剪贴板内容存储到变量中,并可以像往常一样进行断言。您可以验证包含内容(是否为电子邮件地址),也可以按包含文本进行搜索,如果返回值,你复制了文本重新格式化你的问题,你把文本放在代码中,代码放在文本中。根据我对这个主题的研究,大多数网络浏览器都不会再看到剪贴板或以编程方式粘贴它了,由于这是一种安全风险,您可以将剪贴板写入文本文件,并将其与预期值进行比较。您还可以将剪贴板内容存储到变量中,并可以像往常一样进行断言。您可以验证包含内容(是否为电子邮件地址),也可以按包含文本进行搜索,如果返回值,则复制文本
<!DOCTYPE html>
<html>
<body>
<input type="text" value="my@email.com" id="mm">
<button onclick="myFunction()">Copy text</button>
<script>
function myFunction() {
var copyText = document.getElementById("mm");
copyText.select();
copyText.setSelectionRange(0, 99999)
document.execCommand("copy");
window.open();
}
</script>
</body>
</html>
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec
driver = webdriver.Chrome()
wait = WebDriverWait(driver, 5)
driver.get("file:///Users/***/Desktop/test.html")
# store input value
email = wait.until(ec.visibility_of_element_located((By.TAG_NAME, "input"))).get_attribute("value")
# click on button, that will copy value and open new tab
driver.find_element_by_tag_name("button").click()
# wait for the second window and switch to
wait.until(ec.number_of_windows_to_be(2))
driver.switch_to.window(driver.window_handles[-1])
# open google.com to check copied text
driver.get("https://www.google.com/")
google_q = driver.find_element_by_name("q")
# paste text to the google search input, SHIFT and INSERT keys for MacOS
google_q.send_keys(Keys.SHIFT, Keys.INSERT)
# assert copied value with stored
assert google_q.get_attribute("value") == email
# close current window and switch back to the first one
driver.close()
driver.switch_to.window(driver.window_handles[0])