我又一次發現自己在糾結于定位器,或者說是把它放到正確的語法和代碼中的正確方法。
以下是我試圖執行的代碼:
wait.until(EC.presence_of_element_located((By. XPATH, )) XPATH, "//div[@class='col-xs-6']//input[@class='js-order-amount trading-amount trading-pricefield textbox pull-left' and(contains(@data-original-title, 'Wie viele Stück m?chten Sie kaufen? ')]"))。send_keys('33'/span>)
而這里將是來自網站的相應的HTML:
。<div class="col-xs-6"/span>>
< input class="js-order-amount trading-amount trading-pricefield textbox pull- 左" type="text" maxlength="9" required="required" placeholder="Menge" value="1" data-toggle="tooltip" data-html="true" data-trigger="manual" data-container="body" data-placement="right" title="" data-original-title="Wie viele Stück m?chten Sie kaufen? ">
</div>/span>
我得到的錯誤如下:
我得到的錯誤如下:
TimeoutException Traceback (most recent call last)
<ipython-input-24-9c18d6a21146> in <module>
50 # wait.until(EC.presence_of_element_located((By.XPATH, "//div[@data-original-title, 'Wie viele Stück m?chten Sie kaufen?')]"))。
51。
---> 52 wait.until(EC.presence_of_element_located((By.XPATH, "//div[@class='col-xs-6']//input[@class='js-order-amount trading-amount trading-pricefield textbox pull-left' and contains('Wie viele Stück m?chten Sie kaufen?')]).send_keys('33')
53。
54
~anaconda3libsite-packageesseleniumwebdriversupportwait.py in until(self, method, message)
78 if time.time() > end_time。
79 break
---> 80 raise TimeoutException(message, screen, stacktrace)
81
82 def until_not(self, method, message='') 。
TimeoutException。訊息。
我想,特別是
的部分@data-original-title,'Wie viele Stück m?chten Sie kaufen?'
對于這個文本/輸入欄位來說,這是一個很好的選擇。但是我怎樣才能把它作為一個有效的定位器呢?
或者,也許輸入欄位在其他div中有些 "隱藏"?
希望能得到一些提示。
希望得到一些提示或幫助,非常感謝,
。Benjamim
uj5u.com熱心網友回復:
你可以有下面的xpath與@data-original-title, 'Wie viele Stück m?chten Sie kaufen?'
//input[@data- container='body'][@data-original-title='Wie viele Stück m?chten Sie kaufen? ']
PS :請在dev tools(Google chrome)中檢查我們在HTML DOM中是否有unique條目。
檢查的步驟:
在Chrome中按F12 ->;進入element部分 ->;做一個CTRL F ->;然后粘貼xpath,看看你想要的element是否被highlighted與1/1匹配節點。
Update 1 :
根據OP報告的新錯誤,可以通過以下方式解決
使用JS :
time.sleep(5) button = driver.find_element_by_xpath("//input[@data-container='body'][@data-original-title='Wie viele Stück m?chten Sie kaufen? ']") driver.execute_script("arguments[0].rollIntoView(true);", button) button.send_keys('33'/span>)
使用
使用Actions Chain:
time.sleep(5)
button = driver.find_element_by_xpath("//input[@data-container='body'][@data-original-title='Wie viele Stück m?chten Sie kaufen? ']")
ActionChains(driver).move_to_element(button).send_keys('33').perform()
匯入 :
from selenium.webdriver.common.action_chains import ActionChains
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/327070.html
標籤:
