[英]How to click on a button text in selenium (Python)
希望 selenium 使用以下元素單擊此按鈕:
<div id="book_e43c607b-0fba-472e-ab84-7dd8ff6efb6b" class="time-slot"
data-slotclub="calgary" data-slotdate="Saturday, 17 July 2021"
data-slottime="at 5:00 PM">
<div class="time-slot-clock"></div>
<div class="time-slot-box">
<div class="time-slot-data-line">Saturday, 17 July 2021</div>
<div class="time-slot-data-line">at 5:00 PM</div>
<div class="time-slot-data-line">Click to reserve</div>
</div>
然而,與其使用 XPath 或類來查找按鈕,我想看看是否有辦法使用上面塊中第三行的“data-slottime="at 5:00 PM"”部分。 我嘗試使用下面的代碼單擊按鈕,但是找不到元素。
time = driver.find_element_by_link_text("at 8:00 AM")
driver.execute_script("arguments[0].click();", time)
但是,此代碼有效,但使用了我不感興趣的唯一 x 路徑:
time = driver.find_element_by_xpath("//*[@id=\"book_1178d802-ba18-4742-9dce-aac877ad3efb\"]/div[2]/div[1]")
driver.execute_script("arguments[0].click();", time)
首先,強烈建議不要使用關鍵字名稱命名變量。
所以調用網絡元素time
是一種不好的做法。
現在,如果您想通過文本選擇 web 元素,可以這樣做:
time_el = driver.find_element_by_xpath("//div[contains(text(),'the_time')]")
此外,除非別無選擇,否則不建議使用 JavaScript 而不是 selenium .click()
方法單擊元素。
所以我寧願使用這個:
time_el.click()
我猜你會在這里傳遞時間作為參數,在這種情況下它可以是這樣的:
time_el = driver.find_element_by_xpath("//div[contains(text(),'{0}')]").format(the_time_variable)
time_el.click()
from selenium.webdriver.common.by import By
driver.find_element(By.CSS_SELECTOR,"[data-slottime=text_you_want]").click()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.