Selenium com PhantomJS, click () não funciona

2

Eu tenho um script de trabalho para manipular um site. Ao correr com webdriver.Chrome(chromedriver.exe) , funciona como um encanto. Mas quando eu tento com webdriver.PhantomJS(phantomjs.exe) não funciona.

Mais especificamente, o que não funciona é o click () em uma tag a , o HTML é o seguinte:

<a href="javascript:;" class="foo" original-title=""><div class="icon_bar"></div></a>

Eu pego este elemento via self.driver.find_elements_by_class_name('foo') e, em seguida, defino-o para um var, há toneladas dele. Então eu crio um loop e chamo current.click() .

O problema é que não está realmente clicando, se eu verificar manualmente o site nada mudou.

  • Python 3.4.2
  • Selênio 2.44.0
  • Windows 8.1
por JChris 22.12.2014 / 19:10

1 resposta

1

Sabe-se que o PhantomJS nem sempre funciona como esperado em alguns sites. Você pode usar truques / hacks como send_key(Keys.RETURN) nessa tag. Você também pode tentar clicar em uma imagem ou outra tag. Além disso, você pode obter o href e chamá-lo com driver.get(yourhiref) .

Outra coisa é que, você só precisa de um desses elementos? Ou clicar em todos os elementos em find_elements_by_class_name('foo') ? Porque se é o primeiro caso eu usaria xpath e css selector assim:

driver.find_element_by_xpath("//a[@Class='foo']/div")[n].click()

ou

driver.find_element_by_xpath("//a[@Class='foo']")[n].click()

onde n é a criança que você está procurando.

PS: Eu preferiria um Headless Firefox em vez de um PhantomJS

    
por 24.02.2017 / 15:26