无法通过ID定位元素,但可以使用XPath定位

问题描述 投票:0回答:1

我在 macOS 中使用 Selenium 和 Chrome 浏览器来测试我的代码,在网页中输入一些数据来检索数据。我遇到一个问题,当我尝试搜索具有 ID 的元素时,出现以下错误:

Traceback (most recent call last):
  File "/Users/Developer/PYTHON/SELENIUM/linkedInScrape.py", line 29, in <module>
    jobQuery = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR,
  File "/Users/siddhu/Library/Python/3.9/lib/python/site-packages/selenium/webdriver/support/wait.py", line 105, in until
    raise TimeoutException(message, screen, stacktrace)

但是,如果我尝试使用 XPath 访问该元素,编译就会成功。使用 XPath 进行搜索的代码是:

driver.get("https://www.linkedin.com/jobs/")
jobQuery = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, 
                                                                  "//input[starts-with(@id,'jobs-search-box-keyword')]")))

通过ID搜索的代码为:

driver.get("https://www.linkedin.com/jobs/")
jobQuery = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"input#jobs-search-box-keyword-id-ember922"))

我在定位元素时是否有错误?

python selenium-webdriver xpath
1个回答
0
投票

当您使用 CSS 选择器指定 ID 时,您指定的是确切的 ID,其中包含一个看似动态的数字。

input#jobs-search-box-keyword-id-ember922
                                      ^^^ this number changes

您的 XPath 不包含该数字,所以看起来没问题。

我发现的另一个选择是在 CSS 选择器中使用一些保持不变的其他属性。

input:not([disabled])[aria-label='Search by title, skill, or company']
© www.soinside.com 2019 - 2024. All rights reserved.