我无法在 selenium python 中使用 id 单击文本字段
I am unable to click on a text field using id in selenium python
Here is the image of text field I want to click
这是检查字段:
<input _ngcontent-oqh-c45="" formcontrolname="target" matinput="" placeholder="https://" class="mat-input-element mat-form-field-autofill-control ng-tns-c40-0 ng-untouched ng-pristine cdk-text-field-autofill-monitored ng-invalid" id="mat-input-0" data-placeholder="https://" aria-invalid="false" aria-required="false">
这是我正在使用的代码片段:
enter_url = driver.find_element(By.ID, 'mat-input-0')
enter_url.click()
这是我遇到的错误:
Message: no such element: Unable to locate element: {"method":"css selector","selector":"[id="mat-input-0"]"}
(Session info: chrome=98.0.4758.102)
这可能是因为三个原因
- 这是
mat-input-0
,尤其是0
部分是动态生成的
- 元素未正确呈现。
- 此字段在 iframe 或 shadow-root 中。
检查以下 XPath:
//input[@formcontrolname = 'target' and @placeholder='https://' and starts-with(@id,'mat-input') and @aria-invalid='false']
是否唯一。
检查步骤:
Press F12 in Chrome
-> 转到 element
部分 -> 执行 CTRL + F
-> 然后粘贴 xpath
并查看是否需要 element
正在 突出显示 与 1/1
匹配节点。
- 如果它是唯一的,那么我们可以使用显式等待:
代码:
enter_url = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//input[@formcontrolname = 'target' and @placeholder='https://' and starts-with(@id,'mat-input') and @aria-invalid='false']")))
enter_url.click()
进口:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
- 如果 XPath 不是唯一的,那么我们将需要更多 HTML 来定位具有唯一性的正确元素。
Here is the image of text field I want to click
这是检查字段:
<input _ngcontent-oqh-c45="" formcontrolname="target" matinput="" placeholder="https://" class="mat-input-element mat-form-field-autofill-control ng-tns-c40-0 ng-untouched ng-pristine cdk-text-field-autofill-monitored ng-invalid" id="mat-input-0" data-placeholder="https://" aria-invalid="false" aria-required="false">
这是我正在使用的代码片段:
enter_url = driver.find_element(By.ID, 'mat-input-0')
enter_url.click()
这是我遇到的错误:
Message: no such element: Unable to locate element: {"method":"css selector","selector":"[id="mat-input-0"]"}
(Session info: chrome=98.0.4758.102)
这可能是因为三个原因
- 这是
mat-input-0
,尤其是0
部分是动态生成的 - 元素未正确呈现。
- 此字段在 iframe 或 shadow-root 中。
检查以下 XPath:
//input[@formcontrolname = 'target' and @placeholder='https://' and starts-with(@id,'mat-input') and @aria-invalid='false']
是否唯一。
检查步骤:
Press F12 in Chrome
-> 转到 element
部分 -> 执行 CTRL + F
-> 然后粘贴 xpath
并查看是否需要 element
正在 突出显示 与 1/1
匹配节点。
- 如果它是唯一的,那么我们可以使用显式等待:
代码:
enter_url = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//input[@formcontrolname = 'target' and @placeholder='https://' and starts-with(@id,'mat-input') and @aria-invalid='false']")))
enter_url.click()
进口:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
- 如果 XPath 不是唯一的,那么我们将需要更多 HTML 来定位具有唯一性的正确元素。