我正在编写一个Python(3.6.6)脚本,它使用Selenium(3.141.0)在Chrome(ChromeDriver版本77.0.3865.40)中打开一个网址,导航一系列菜单,在弹出窗口中输入登录详细信息并登录。这是我的剧本:
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
url = 'https://some.url.com/'
driver = webdriver.Chrome()
action = ActionChains(driver)
driver.get(url)
button_1 = driver.find_element_by_xpath("//*[contains(text(), 'button_1_text')]")
button_1.click()
button_2 = driver.find_element_by_id('button_2_text')
button_2 .click()
link = driver.find_element_by_link_text('link_text')
action.move_to_element(link).perform()
link.click()
alert_obj = driver.switch_to.alert
如果我手动执行此导航,我会得到一个提示,询问用户名和密码,并有两个按钮用于登录或取消。当Selenium执行此操作时,我看到提示闪烁,但随后很快消失,因此我得到错误:
selenium.common.exceptions.NoAlertPresentException: Message: no such alert
如果手动刷新仍然打开的浏览器,则可以显示警报,但如果编写刷新脚本,则提示再次消失。我尝试过等待警报出现,如使用selenium和python检查是否存在警报中所述,但等待只是超时。
如果我检查了警报消失后保持打开状态的页面的源代码,我会看到:
<!-- template name: form.autopost.template.html -->
<html>
<head>
<title>Submit Form</title>
</head>
<body onload="javascript:document.forms[0].submit()">
<noscript>
<p>
<strong>Note:</strong> Since your browser does not support JavaScript, you must press the Resume button once to proceed.
</p>
</noscript>
<form method="post" action="another_url.saml2">
<input type="hidden" name="SAMLRequest" value="really_long_token"/>
<input type="hidden" name="RelayState" value="token"/>
<noscript><input type="submit" value="Resume"/></noscript>
</form>
</body>
</html>
因此,我尝试通过以下方式显式启用JavaScript:
options = webdriver.ChromeOptions()
options.add_argument("--enable-javascript")
driver = webdriver.Chrome(chrome_options=options)
这似乎类似于Selenium test-Firefox警报立即消失,但看起来我无法使用Chrome重新创建解决方案。我尝试了以下方法:
options = webdriver.ChromeOptions()
options.add_argument("--disable-popup-blocking")
driver = webdriver.Chrome(chrome_options=options)
但这也没什么区别。还有其他方法可以防止Selenium/Chrome自动关闭警报吗?
以下是弹出窗口的屏幕截图:
我已尝试在脚本末尾添加以下内容:
current_url = driver.current_url
parts = current_url.split('//')
login_url = parts[0] + '//{}:{}@'.format(username, password) + parts[1]
driver.get(login_url)
但这没用。登录URL如下所示:
https://用户名:password@some_site/1S14/idp/G6tue/简历/idp/prp.ping?pfidpadapterid=idp.CG2LlmzHFUrah4EmDQ7jO_XTLGP
如果你得到的提示是浏览器登录,那么你可以尝试这样设置用户名和密码:
driver.get("https://username:password@somewebsite.com/")
如本文所述,Selenium Python在HTTPS网站上验证浏览器登录pupup对话框
但是这不是一个警报,这就是为什么你不能用driver.switch_to.alert
来处理它,你会得到异常。
我已经为我的公司做了一个类似的项目,您需要做的是使用UI自动化(Lib:pyautogui)浏览到该URL,然后输入用户名和密码。之后,您可以自由使用Selenium做任何事情。
您的代码不会超出driver.get(url),它将永远停留在那里。
如何将以下警报转换为ESLint可接受的警报? 我的构建失败,因为显然我不能使用"警报"。我想在加载某个东西时调用此警报。此代码工作成功,但不符合ESLint。 http://eslint.org/docs/rules/no-alert 如何修改代码使其成功构建? 提前感谢:)
我试图在。ics文件中实现警报()。其思想是,每当在系统中创建指定的记录时,就会发送带有邀请的自动电子邮件。该事件工作正常,它正在发送,我能够添加到日历(谷歌日历和iPhone/Mac日历)。 所以问题是:是谷歌和苹果忽视了这些VALARM组件,还是我做错了什么? 我是否正确理解这个带有动作的警报应该只是在浏览器(谷歌日历)和日历应用程序中向我显示一个弹出窗口? 我的文件正文: null
Logstash 中有两个 output 插件是 nagios 有关的。outputs/nagios 插件发送数据给本机的 nagios.cmd 管道命令文件,outputs/nagios_nsca 插件则是 调用 send_nsca 命令以 NSCA 协议格式把数据发送给 nagios 服务器(远端或者本地皆可)。 Nagios.Cmd nagios.cmd 是 nagios 服务器的核心组件。
在我的代码中,我创建了一个警报,如下所示: 要取消警报,我执行以下操作: 移除任何具有匹配意图的警报。任何类型的警报,其意图与此警报匹配(由filterEquals(Intent)定义),都将被取消。 我不太确定“匹配意图”的定义是什么。如果我用上面的代码创建多个警报,然后按照显示的方式执行取消,它会取消我创建的所有警报吗?
问题内容: 我正在编写Java客户端(在weblogic 10.3上)以调用安全的Web服务。我已获得安装在cacerts,DemoIdentity.jks和DemoTrust,jks中的客户端证书。在我的Weblogic中,我已将密钥库设置为DemoIdentity和DemoTrust。在weblogic控制台中,我已将“双向客户端证书行为:”设置为“已请求但未强制执行的客户端证书”。对于“启用
本章将讨论警报和Bootstrap为警报提供的类。 警报提供了一种为用户设置消息样式的方法。 它们为典型的用户操作提供上下文反馈消息。 您可以添加可选的关闭图标以发出警报。 对于内联解雇,请使用Alerts jQuery插件 。 您可以通过创建包装器并添加.alert类和四个上下文类之一(例如, .alert-success, .alert-info, .alert-warning, .alert