繁体   English   中英

在python中使用Selenium将值传递给javascript函数

[英]Pass value to a javascript function using Selenium in python

login.php在提交时调用以下函数

<script type="text/javascript">
  function validate(){
    var res=confirm("Are you sure");
    if(res)
      return true;
    else
      return false;
  }
</script>

我正在尝试使用Selenium通过python脚本登录。 当我单击登录时,将调用以下脚本,并且需要选择“是”进行登录。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

browser = webdriver.Firefox()
browser.get("webpage/login.php")

username = browser.find_element_by_id("id")
password = browser.find_element_by_id("pass")
username.send_keys("username")
password.send_keys("password")
login_attempt = browser.find_element_by_xpath("//*[@type='submit']")
login_attempt.submit()

#I want to send yes to the `validate` function and the
#then then again do browser.get("webpage/home.php") to scrape info from a html tag

#print(login_attempt.submit())

我对我尝试做的事情还比较陌生。.如果有更好的实践,建议会很受欢迎。

单击提交后弹出窗口,我们称它们为JS警报/确认,它们由JavaScript触发并由浏览器本地支持。 对于这样的弹出窗口,硒已经实现了与之交互的代码。 因此,只需在所使用的版本上从Selenium python客户端API中找到方法即可。 (在不同的客户端API版本中,方法名称和调用方式可能不同)。

alert = browser.switch_to_alert()
//accept the alert
alert.accept()

// maybe as below to call
alert = driver.switch_to.alert
alert.accept()

// or
Alert(driver).accept()

使用以下代码:

browser = webdriver.Firefox()
browser.get("http://username:password@webpage/login.php")

您将可以绕过此身份验证警报。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2025 STACKOOM.COM