【问题标题】:Can't click a "next" button using xpath, .select nor Selenium using Python无法使用 xpath、.select 或使用 Python 的 Selenium 单击“下一步”按钮
【发布时间】:2016-02-05 02:14:34
【问题描述】:

我正在尝试单击此页面底部的“下一步”按钮:https://www.domcop.com/domains/great-expired-domains/

我尝试过使用 .select、xpath 和 Selenium 的 css 选择器,但没有任何效果。

我认为该按钮正在生成一个 JQuery 代码以在同一页面上列出域,这可以解释为什么 python 无法使用 xpath 和 .select 来单击它。

但是,我不知道如何用 Selenium 点击它...

这是我的脚本:

from selenium import webdriver

driver = webdriver.Firefox()
driver.get("https://www.domcop.com/domains/great-expired-domains/")
assert "Python" in driver.title
link = driver.find_element_by_class_name('next').get_attribute('a')

它返回一个“NoneType”对象...

任何帮助将不胜感激!

谢谢

【问题讨论】:

    标签: javascript jquery python selenium xpath


    【解决方案1】:

    与常见的 XML/HTML 解析器不同,selenium 模拟浏览器行为,因此它不应该对 JQuery 生成的元素产生问题,因为您似乎对此感到担忧。您的选择器的问题是,a 不是next 类元素的不是属性,而是next。因此,您可以在此处为子 > 使用 CSS 选择器:

    link = driver.find_element_by_css_selector('.next > a')
    link.click()
    

    【讨论】:

    • 酷赞成票.. 我有一个查询是。代表一个阶级? ..你如何创建这个css选择器..一点解释或任何关于相同或教程的文章都会有所帮助..谢谢:)
    • @ShubhamJain 是的,. 是 CSS 中类选择器的表示法,类似于 XPath 中属性的 @。我相信 CSS 的所有基础知识/介绍都涵盖了这一点,例如:MDN 的 this one,或 code.tutsplus.comthis one
    【解决方案2】:
    1. 您必须找到这两个按钮。
    2. 向下滚动到底部。
    3. 点击第二个按钮。

    见下面的代码:

    driver.get('https://www.domcop.com/domains/great-expired-domains/')    
    aElements = driver.find_elements_by_css_selector('.next > a')
    driver.execute_script('window.scrollTo(0, document.body.scrollHeight);') 
    aElements[1].click()
    

    【讨论】:

      【解决方案3】:

      find_element(:xpath, '//*[@id="domcop-table_wrapper"]/div[position()>1]/div[position()>1]/div/ul/li[ 6]/a/i[@class="icon-double-angle-right"]')

      此 Xpath 将始终有效。之后您可以向下滚动并点击

      我只是没有向下滚动。就是这样。

      检查这个 Xpath

      (:xpath, '//*[@id="domcop-table_wrapper"]/div[not(contains(text(),
      "Display")) and not(contains(text(),"records"))]/descendant::li[@class="next"]/a/i[@class="icon-double-angle-right"]')
      

      【讨论】:

      • 这是最权威的 a = @driver.find_element(:xpath, '//*[@id="domcop-table_wrapper"]/div[not(contains(text(), "Display ")) and not(contains(text(), "records"))]/div[not(contains(text(), " to ")) and not(contains(text(), " of "))]/ div/ul/li[@class="next"]/a/i[@class="icon-double-angle-right"]') OR (:xpath, '//*[@id="domcop-table_wrapper "]/div[position()>1]/div[not(contains(text(), " to ")) 和 not(contains(text(), " of "))]/div/ul/li[@ class="next"]/a/i[@class="icon-double-angle-right"]')
      • ElementNeeded = @driver.find_element(:xpath, '//*[@id="domcop-table_wrapper"]/div[not(contains(text(), "Display")) 而不是(contains(text(), "records"))]/descendant::li[@class="next"]/a/i[@class="icon-double-angle-right"]'); ElementNeeded.location_once_scrolled_into_view; ElementNeededa.click
      猜你喜欢
      • 1970-01-01
      • 2021-05-13
      • 1970-01-01
      • 2018-11-04
      • 1970-01-01
      • 2021-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多