BAR*_*OWL 4 python selenium selenium-webdriver
所以我开始掌握 while 循环的窍门,但是当在 selenium 代码上使用 while 循环时,我遇到了不足。
我几乎尝试将一个任务复制 10 次,代码如下
主要.py
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
driver.get('https://orlando.craigslist.org/search/cta')
owl = driver.find_element_by_xpath('//*[@id="sortable-results"]/ul/li/p/a')
res = 1
while res < 10:
owl2 = owl.click()
driver.find_element_by_xpath('/html/body/section/header/nav/ul/li[3]/p/a').click()
res = res + 1
Run Code Online (Sandbox Code Playgroud)
这是错误
回溯(最近一次调用最后一次):文件“main.py”,第 12 行,在 owl2 = owl.click() 文件“/Library/Python/2.7/site-packages/selenium/webdriver/remote/webelement.py”中,第77行,在单击self._execute(Command.CLICK_ELEMENT)文件“/Library/Python/2.7/site-packages/selenium/webdriver/remote/webelement.py”中,第491行,在_execute中返回self._parent.execute(command ,params)文件“/Library/Python/2.7/site-packages/selenium/webdriver/remote/webdriver.py”,第238行,执行self.error_handler.check_response(response)文件“/Library/Python/2.7/site -packages/selenium/webdriver/remote/errorhandler.py”,第 193 行,在 check_response 中引发 exception_class(message, screen, stacktrace) selenium.common.exceptions.StaleElementReferenceException:消息:过时的元素引用:元素未附加到页面文档(会话信息:chrome=56.0.2924.87)(驱动程序信息:chromedriver=2.27.440174(e97a722caafc2d3a8b807ee115bfb307f7d2cfd9),platform=Mac OS X 10.11.2 x86_64)
有什么建议 ?
每次 DOM 更改或刷新时,driver它先前定位的元素都会丢失,从而导致错误。
StaleElementReferenceException:消息:过时的元素引用:元素未附加到页面文档
您需要重新定位它们才能与它们交互。此外,click()不返回任何值,因此您不能将其分配给任何内容
res = 1
while res < 10:
owl = driver.find_element_by_xpath('//*[@id="sortable-results"]/ul/li/p/a')
owl.click()
driver.find_element_by_xpath('/html/body/section/header/nav/ul/li[3]/p/a').click()
res = res + 1
Run Code Online (Sandbox Code Playgroud)
编辑
通过for循环所有项目,您可以将项目定位到列表中并按索引单击
size = len(driver.find_elements_by_xpath('//*[@id="sortable-results"]/ul/li/p/a'))
for i in range(0, size):
owl = driver.find_elements_by_xpath('//*[@id="sortable-results"]/ul/li/p/a')
owl[i].click()
driver.find_element_by_xpath('/html/body/section/header/nav/ul/li[3]/p/a').click()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9019 次 |
| 最近记录: |