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

时间:2017-09-12 16:56:39

标签: python selenium

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

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

我正在尝试使用Selenium登录python脚本。当我点击登录时,会调用以下脚本,我需要选择“是”&#39;登录。

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())

我对我要做的事情比较新。如果有更好的做法,建议很受欢迎。

2 个答案:

答案 0 :(得分:1)

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

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()

答案 1 :(得分:0)

使用以下代码:

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

您将能够绕过此身份验证警报。