【问题标题】:Python Selenium Can't find element title (xpath)Python Selenium 找不到元素标题(xpath)
【发布时间】:2018-10-04 19:46:45
【问题描述】:
from selenium import webdriver
from selenium.webdriver.support.ui import Select
from bs4 import BeautifulSoup
import collections
import datetime

browser = webdriver.Chrome()
browser.get('https://libcal.library.ucsb.edu/rooms.php?i=12405')
browser.find_element_by_link_text('18').click() #selects date
browser.find_element_by_xpath('//*[@title="2314, 12:00am to 12:30am, Thursday, October 18, 2018"]').click()

我正在尝试查找具有我的代码中所述标题的元素。它基本上是选择房间可用的时间段,但我不能通过这个 xpath 做到这一点。我想让它可以在不同的日子重复,并且 ID 每天都会改变。

<a href="#" class="lc_rm_a" data-seq="36825101" id="647749313" 
onclick="return showBookingForm(this.id,'2314','12:00am - 12:30am, 
Thursday, October 18, 2018', '30');" style="width: 30px; float:left; 
display:block;" title="2314, 12:00am to 12:30am, Thursday, October 18, 
2018">&nbsp;</a>

【问题讨论】:

    标签: python selenium xpath element title


    【解决方案1】:

    这将完美地工作:

    from selenium import webdriver
    
    browser = webdriver.Chrome()
    browser.implicitly_wait(2)
    browser.get('https://libcal.library.ucsb.edu/rooms.php?i=12405')
    browser.find_element_by_link_text('17').click()
    code = '2574'
    time = '1:00am to 1:30am'
    date = browser.find_element_by_xpath('//*[@id="s-lc-rm-tg-h"]').text
    browser.find_element_by_xpath('//*[@title="' + code + ', ' + time +  ', ' + date + '"]' ).click()
    browser.close()
    

    但是,不要忘记,如果元素不可点击(房间不可用),您将收到错误消息。请记住这一点!

    【讨论】:

    • 我不明白你的代码和我的代码之间的区别,因为“browser.find_element_by_xpath”的基本部分似乎是相同的。
    • 在我的例子中,可变日期是动态的。例如,如果您单击第 18 天,则此变量变为 2018 年 10 月 18 日星期四。对于第 17 天,这将是 2018 年 10 月 17 日星期三。在您的情况下,这部分始终坚持为 2018 年 10 月 18 日星期四。这仅适用于第 18 天。
    猜你喜欢
    • 2018-08-30
    • 1970-01-01
    • 2020-12-22
    • 1970-01-01
    • 1970-01-01
    • 2020-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多