[英]Python/Selenium:Different ways to click this specific button
我剛從使用VBA切換過來時,試圖從總體上理解Python。 我對您解決此單個問題的可能方式感興趣。 我已經通過直接直接轉到鏈接來解決它,但是我需要在這里理解和應用。
from selenium import webdriver
chromedriver = r'C:\Users\dd\Desktop\chromedriver.exe'
browser = webdriver.Chrome(chromedriver)
url = 'https://www.fake.com/'
browser.get(url)
browser.find_element_by_id('txtLoginUserName').send_keys("Hello")
browser.find_element_by_id('txtLoginPassword').send_keys("There")
browser.find_element_by_id('btnLogin').click()
在這一點上,我試圖導航到特定的按鈕/鏈接。 這是頁面/元素中的信息
<a href="javascript:void(0)" style="text-decoration:none" onclick="InitiateCallBack('187', 'True', 'T-Mobile', 'https://www.fake.com/', 'TMobile')">T-Mobile</a>
這是我嘗試過的一些方法:
for elem in browser.find_elements_by_xpath("//*[contains(text(), 'T-Mobile')]"):
elem.click
browser.execute_script("InitiateCallBack(187, True, T-Mobile, https://www.fake.com/, TMobile)")
我也試圖尋找標簽並使用css選擇器,但我出於沮喪而刪除了所有這些標簽!
具體問題
我嘗試閱讀以下鏈接,但仍未成功以其他方式輸入。 部分原因可能是因為我還不了解特定的語法。 這只是我看過的東西。 我來這里之前花了大約3個小時嘗試各種事情!
硒python onclick()提供了StaleElementReferenceException http://selenium-python.readthedocs.io/locating-elements.html Python:硒來模擬onclick https://stackoverflow.com/questions/43531654/simulate-a-onclick-with- selenium-https://stackoverflow.com/questions/45360707/python-selenium-using-onclick 使用Python在Selenium中運行javascript
如何利用內文“ T-Mobile”單擊按鈕?
find_elements_by_link_text
適用於這種情況。
elements = driver.find_elements_by_link_text('T-Mobile')
for elem in elements:
elem.click()
如果您沒有完整的確切文本,也可以使用by_partial_link_text
定位器。
我將如何執行onclick事件?
最簡單的方法是如上所述對元素簡單地調用.click()
,並且該事件自然應該在那個時候執行。
另外,您可以檢索onclick
屬性並使用driver.execute_script
運行js。
for elem in elements:
script = elem.get_attribute('onlcick')
driver.execute_script(script)
編輯:
請注意,在您的代碼中您執行了element.click
-這沒有任何作用。 element.click()
(請注意括號)將調用click方法。
有沒有辦法利用browser.execute_script()進行onclick事件
execute_script
可以觸發等效事件,但是這樣做可能會遺漏更多的偵聽器。 使用元素單擊方法最有效。 該站點上可能有很多實施細節,可能會妨礙您的自動化工作,但這些可能性是無窮的。 沒有看到實際的背景,很難說。
您可以使用JS方法單擊元素或以其他方式與頁面進行交互,但是您可能會錯過某些在“正常”使用網站時發生的事件偵聽器; 您想要或多或少地模仿正常使用情況。
根據您共享的HTML ,很明顯該網站使用JavaScript 。 因此,要在文本為T-Mobile的鏈接上click()
,必須使用expected_conditions
子句作為element_to_be_clickable
來誘導WebDriverWait ,並且可以使用以下代碼塊:
WebDriverWait(driver, 20).until(expected_conditions.element_to_be_clickable((By.XPATH, "//a[contains(.,'T-Mobile')]"))).click()
你可以用它
<div class="button c_button s_button" onclick="submitForm('rMTF')" style="margin-bottom: 30px;">
<input class="v_small" type="button"></input>
<span>
Reset
</span>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.