Eu tenho um script de trabalho para manipular um site. Ao correr com webdriver.Chrome(chromedriver.exe)
Ele 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 um a
tag, o HTML é o seguinte:
<a href="javascript:;" class="foo" original-title=""><div class="icon_bar"></div></a>
Eu recebo este elemento via self.driver.find_elements_by_class_name('foo')
e depois configurá-lo para um var, há toneladas dele. Então eu crio um loop e chamo current.click()
.
A coisa é que não está realmente clicando, se eu verificar o site manualmente nada mudou.
- Python 3.4.2
- Selênio 2.44.0
- Windows 8.1
google-chrome
python
JChris
fonte
fonte
Respostas:
Sabe-se que o PhantomJS nem sempre funciona como esperado em alguns sites. Você poderia 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 comdriver.get(yourhiref)
.Outra coisa é que, você só precisa de um desses elementos? Ou para clicar em todos os elementos em
find_elements_by_class_name('foo')
? Porque se é o primeiro caso eu usaria xpath e css selector como este: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 iria para um Firefox sem cabeça em vez de PhantomJS
fonte