Firefox在使用Selenium-Webdriver时会看到PhantomJS不支持的元素

时间:2015-04-14 16:38:19

标签: python selenium-webdriver phantomjs

我一直在寻找解决问题的方法很长一段时间,希望有人能想到一些有用的东西。

我有一个工作的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>

您认为可能导致此事的任何原因吗?

1 个答案:

答案 0 :(得分:5)

感谢Artjom B,我解决了我的问题。答案:

只需更改代码:

driver = webdriver.PhantomJS(service_args=['--ignore-ssl-errors=true'])

这是由于我猜的ssl证书。