selenium python不使用phantomjs但可以使用Firefox

时间:2018-01-12 20:23:27

标签: python python-3.x python-2.7 selenium-webdriver phantomjs

我尝试使用以下代码按最新选项排序,但它提供了以下错误

错误

Message: {"errorMessage":"Unable to find element with css selector 'span.sortedLabel'","request":{"headers":{"Accept":"application/json","Accept-Encoding":"identity","Connection":"close","Content-Length":"107","Content-Type":"application/json;charset=UTF-8","Host":"127.0.0.1:34510","User-Agent":"Python http auth"},"httpVersion":"1.1","method":"POST","post":"{\"using\": \"css selector\", \"value\": \"span.sortedLabel\", \"sessionId\": \"f5246520-f7d4-11e7-a9f4-adb0a497f49e\"}","url":"/element","urlParsed":{"anchor":"","query":"","file":"element","directory":"/","path":"/element","relative":"/element","port":"","host":"","password":"","user":"","userInfo":"","authority":"","protocol":"","source":"/element","queryKey":{},"chunks":["element"]},"urlOriginal":"/session/f5246520-f7d4-11e7-a9f4-adb0a497f49e/element"}}

屏幕截图:可通过屏幕获取

一切都适用于Firefox,但不适用于phantomjs。

以下是代码:

from selenium import webdriver  # open webdriver for specific browser
from selenium.webdriver.common.keys import Keys  # for necessary browser action
from selenium.webdriver.common.by import By  # For selecting html code
import time

url="https://www.magicbricks.com/property-for-rent/residential-real-estate?proptype=Multistorey-Apartment,Builder-Floor-Apartment,Penthouse,Studio-Apartment,Service-Apartment,Residential-House,Villa&Locality=Bellandur&cityName=Bangalore"
# os.environ['NO_PROXY'] = '127.0.0.1'
# driver = webdriver.Firefox()
driver = webdriver.PhantomJS(executable_path=r'D:\Setup\NEW SOFTWARE\Python\phantomjs-2.1.1-windows\bin\phantomjs.exe')

driver.get(url)
try:
    #driver.find_element_by_id("sort4").click()
    driver.find_element_by_css_selector("span.sortedLabel").click()
    driver.find_element_by_id("sort4").click()
    time.sleep(3)
    html = driver.page_source
except Exception as e:
    print(str(e))

对此有任何解决方案吗?

1 个答案:

答案 0 :(得分:0)

看起来你还没有实施任何超时。 FF和PahntomJS可能在页面被视为完全加载时表现不同,这可能导致FF工作正常而PhantomJS不能正常工作。要快速调试此行为,只需在您的阳离子之间添加一些隐式等待,看看它们是否有帮助。如果它工作,用适当的显式等待替换隐式等待。

隐含等待10秒的示例:

driver.implicitly_wait(10) # seconds