如何用硒选择元素?

时间:2016-08-20 20:46:48

标签: python selenium

我想要获得href。它是下一页按钮。我按class_name = next选择元素。这是我的代码:

elem = browser.find_element_by_class_name('next').click()

出现错误Element is not clickable at point (801, 553) 我认为这是因为所选元素是<li>标记,并且它没有on_click()方法。

如何获得<a>标记的onclick?它没有id或类。

这是HTML:

<li id="next_pag_1" class="next">
  <a href="http://www.infoempleo.com/ofertas-internacionales/pagina_2/"
     onclick="paginarDatos($(this).parent('#pagination li').attr('id')); return false;">
<span class="icon-chevron-right"></span>
  </a>
</li>`

我正在尝试抓取此页面:http://www.infoempleo.com/ofertas-internacionales/ 并希望使用selenium点击下一页。 任何帮助都感激不尽。

2 个答案:

答案 0 :(得分:1)

尝试

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

element = WebDriverWait(browser, 10).until(EC.element_to_be_clickable((By. XPATH, '//li[@id="next_pag_1"]/a')))
element.click()

答案 1 :(得分:0)

导致此问题的Chrome浏览器。为了公平对待用户,Chrome会点击中心的元素。某些元素在中心无法点击。所以,这就是我所做的:

elem = browser.find_element_by_class_name('next')
action = ActionChains(browser)
action.move_to_element_with_offset(elem, 30, 20)
action.click()
action.perform()

我移动到偏移(elem, 30, 20)的元素。元素是36x36,因此30x20不在元素的中间。然后使用ActionChains执行单击并运行。