我在 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"))
我在定位元素时是否有错误?
当您使用 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']