簡體   English   中英

如何單擊硒(Python)中的按鈕文本

[英]How to click on a button text in selenium (Python)

這些是我希望 selenium 點擊的按鈕

這就是上面顯示的 4 個按鈕的元素的樣子

希望 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM