Selenium TimeOut>找不到定位器

2024-09-30 16:26:32 发布

您现在位置:Python中文网/ 问答频道 /正文

再一次,我发现自己在努力使用定位器,或者说,用正确的方式将其转换为正确的语法和代码

以下是我试图执行的代码:

wait.until(EC.presence_of_element_located((By.XPATH, "//div[@class='col-xs-6']//input[@class='js-order-amount trading-amount trading-price-field textbox pull-left' and(contains(@data-original-title,'Wie viele Stück möchten Sie kaufen?'))]"))).send_keys('33')

下面是网站上相应的HTML:

<div class="col-xs-6">

<input class="js-order-amount trading-amount trading-price-field textbox pull-left" 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>

我得到的错误如下:

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?'))]"))).click()
     51 
---> 52 wait.until(EC.presence_of_element_located((By.XPATH, "//div[@class='col-xs-6']//input[@class='js-order-amount trading-amount trading-price-field textbox pull-left' and contains('Wie viele Stück möchten Sie kaufen?')]"))).send_keys('33')
     53 
     54 

~\anaconda3\lib\site-packages\selenium\webdriver\support\wait.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: Message: 

我想,尤其是

@data-original-title,'Wie viele Stück möchten Sie kaufen?'

此文本/输入字段的唯一性。但是我如何使用它作为有效的定位器呢

或者输入字段在其他div中有些“隐藏”

非常感谢您的提示或帮助,非常感谢

本杰明


Tags: divdatatitleamountclassckuntilst
1条回答
网友
1楼 · 发布于 2024-09-30 16:26:32

您可以使用以下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(谷歌浏览器)中检查HTML DOM中是否有唯一的条目

检查步骤:

Press F12 in Chrome->;转到element部分->;做一个CTRL + F->;然后粘贴xpath并查看所需的element是否通过1/1匹配节点突出显示

更新1:

根据OP报告的新错误,可通过以下方法解决

  1. 使用操作链:

    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()
    
  2. 使用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].scrollIntoView(true);", button)
    button.send_keys('33')
    

导入:

from selenium.webdriver.common.action_chains import ActionChains

相关问题 更多 >