我一直在寻找解决问题的方法很长一段时间,希望有人能想到一些有用的东西。
我有一个工作的selenium脚本(在Python中)与Firefox驱动程序一起在网站上连接。当使用PhantomJS作为驱动程序时,它不再起作用。
表单由javascript生成,位于https网站上。以下是用户输入的代码:
<script language="JavaScript1.2">
document.writeln("<input class=\"textform\" type=\"text\" id=\"user\" name=\"user\" size=\"" + size + "\" tabindex=1 onFocus=\"hadFocus(true)\">");
</script>
以下是脚本中寻找它的部分:(使用firefox而不是PhantomJS)
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
driver = webdriver.Firefox()
driver.get([MY URL])
print driver.page_source
driver.find_element_by_id("user").clear()
driver.find_element_by_id("user").send_keys([MY USER ID])
driver.find_element_by_id("pass").clear()
driver.find_element_by_id("pass").send_keys([MY PASS])
driver.find_element_by_name("login_btn").click()
html_source = driver.page_source
print html_source
driver.close()
这是我得到的错误:
selenium.common.exceptions.NoSuchElementException
如果我在到达页面后立即打印page_source
,Firefox会显示正确的源代码,其中PhantomJS只有:<html><head></head><body></body></html>
您认为可能导致此事的任何原因吗?
答案 0 :(得分:5)
感谢Artjom B,我解决了我的问题。答案:
只需更改代码:
driver = webdriver.PhantomJS(service_args=['--ignore-ssl-errors=true'])
这是由于我猜的ssl证书。