2015-05-27 2 views
2

Я хочу нажать на load-more, пока он не исчезнет на этой странице.Как нажать кнопку загрузки динамически, используя selenium python?

Я пробовал, но иногда работает или дает ошибку. Это не идеальное решение, которое я сделал.

я могу иметь несколько URL в списке и ударил один за другим и нагрузки более, пока она не исчезнет с этой страницы.

Заранее благодарим за помощь.

Код

driver = webdriver.Firefox() 

url = ["https://www.zomato.com/HauzKhasSocial","https://www.zomato.com/ncr/wendys-sector-29-gurgaon","https://www.zomato.com/vaultcafecp"] 
for load in url: 
    driver.get(load) 
    xpath_content='//div[@class = "load-more"]' 
    temp_xpath="true" 
    while temp_xpath: 
     try: 
      #driver.implicitly.wait(15) 
      #WebDriverWait(driver, 30).until(EC.visibility_of_element_located((By.XPATH,xpath_content))) 
      WebDriverWait(driver, 30).until(EC.presence_of_element_located((By.XPATH,xpath_content))) 
      #urls=driver.find_element_by_xpath(xpath_content) 
      urls=driver.find_element_by_xpath(xpath_content) 
      text=urls.text 
      if text: 
       temp_xpath=text 
      print "XPATH=",temp_xpath 
      driver.find_element_by_xpath(xpath_content).click() 
      #driver.execute_script('$("div.load-more").click();') 
     except TimeoutException: 
      print driver.title, "no xpath of pagination" 
      temp_xpath="" 
      continue 

Большинство времени я получаю следующее сообщение об ошибке при запуске моей программы.

File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 173, in execute 
response = self.command_executor.execute(driver_command, params) 
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/remote_connection.py", line 349, in execute 
return self._request(command_info[0], url, body=data) 
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/remote_connection.py", line 380, in _request 
resp = self._conn.getresponse() 
File "/usr/lib/python2.7/httplib.py", line 1045, in getresponse 
response.begin() 
File "/usr/lib/python2.7/httplib.py", line 409, in begin 
version, status, reason = self._read_status() 
File "/usr/lib/python2.7/httplib.py", line 373, in _read_status 
raise BadStatusLine(line) 
httplib.BadStatusLine: '' 
+0

Что произойдет, если вы переключитесь на хром? Является ли он еще воспроизводимым? Благодарю. – alecxe

+0

Какие версии селена и firefox вы используете? – alecxe

+0

Я использую селен версии 2.45.0 и Firefox версии 37.0.1 – Mukesh

ответ

0

Вы, вероятно, получите ошибку BadStatus из-за ошибки, которая была исправлена ​​в последних версиях Selenium webdrivers. Недавно я попал в подобную ситуацию, и вот дискуссия с разработчиками, которые помогли мне.

https://bugs.chromium.org/p/chromedriver/issues/detail?id=1548

Смежные вопросы