【问题标题】:How to click all of the same text span by using selenium?如何使用硒单击所有相同的文本跨度?
【发布时间】:2021-08-27 09:50:49
【问题描述】:

我试试代码

allSpanDate = self.driver.find_element_by_xpath("//span[text()='08/28']").click()

但只有第一个元素被点击

所以我这样编辑但不会工作

allSpanDate = self.driver.find_element_by_xpath("//span[text()='08/28']")
for spanDate in allSpanDate:
    spanDate.click()

网站是

http://211.21.63.217:81/ticket_online.aspx

如何点击所有跨度文本是 08/28 ?

from selenium import webdriver

class CenturyasiaxinbeiSpider(scrapy.Spider):
    name = 'CenturyasiaXinbei'
    allowed_domains = ['www.centuryasia.com.tw', '211.21.63.217:81']
    start_urls = ['http://211.21.63.217:81/ticket_online.aspx']

    def __init__(self):
        print('__init__')
        self.driver = webdriver.Chrome('/Users/motogod19/chromedriver')
        self.driver.get('http://211.21.63.217:81/ticket_online.aspx')

    def parse(self, response):
        allSpanDate = self.driver.find_element_by_xpath("//span[text()='08/28']")
        for spanDate in allSpanDate:
            spanDate.click()
        time.sleep(10)

【问题讨论】:

    标签: python selenium scrapy


    【解决方案1】:

    看,当你这样做的时候:

    allSpanDate = self.driver.find_element_by_xpath("//span[text()='08/28']")
    for spanDate in allSpanDate:
        spanDate.click()
    

    你一定有 web element is not iterabel 错误。

    那是因为你使用的是find_element,请尝试使用find_elements

    另外,我在本地尝试了以下代码,

    allSpanDate = driver.find_elements_by_xpath("//span[text()='08/28']")
    for spanDate in allSpanDate:
        ActionChains(driver).move_to_element(spanDate).perform()
        spanDate.click()
        time.sleep(1)
    

    似乎在做你一直在寻找的工作。

    进口:

    from selenium.webdriver.common.action_chains import ActionChains
    

    【讨论】:

      【解决方案2】:
      allSpanDate = driver.find_elements_by_xpath("//span[text()='08/28']")
      for spanDate in allSpanDate:
          ActionChains(driver).move_to_element(spanDate).perform()
          spanDate.click()
          time.sleep(1)
      

      driver.find_element_by_xpath 返回 1 个元素(它将是页面上的第一个元素,带有 ("//span[text()='08/28']") 这个 xpath) 您需要使用 find_elements_by_xpath 方法获取所有元素

      【讨论】:

        猜你喜欢
        • 2023-03-10
        • 2020-02-13
        • 1970-01-01
        • 2018-12-15
        • 1970-01-01
        • 1970-01-01
        • 2021-04-27
        • 2016-12-18
        • 1970-01-01
        相关资源
        最近更新 更多