微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

for循环中的硒过时元素引用 我用的是 Windows10,Chrome 版本 89.0.4389.9,vscode,python我们会找到答案像我们一样

如何解决for循环中的硒过时元素引用 我用的是 Windows10,Chrome 版本 89.0.4389.9,vscode,python我们会找到答案像我们一样

我用的是 Windows10,Chrome 版本 89.0.4389.9,vscode,python

代码仅循环一次,然后出现以下错误

Future<void> main() async {
    // Do whatever you need to do here
    final home = await createHomeWidgetDependingOnAsyncResult();
    return runApp(MyApp(home: home));
}
table = driver.find_element_by_xpath('//*[@id="frm"]/table')
tbody = table.find_element_by_tag_name("tbody")
rows = tbody.find_elements_by_tag_name("tr")
# btns = driver.find_element_by_xpath('//*[@id="frm"]/table/tbody/tr[*]/td[2]/a')

for index,value in enumerate(rows):
    body=value.find_elements_by_tag_name("td")[1]

    body.click()
    sleep(2)
    
    driver.back()
    sleep(2)

解决方法

我不使用 selenium,但我认为问题在于该元素不再位于 DOM 中。要解决此问题,您可以使用“try”块。

try:
    body=value.find_elements_by_tag_name("td")[1]
    #some code
except:
    pass
,

似乎我找到了解决方案,但可以保护它是最好的,会更深入地研究它:

elements = driver.find_elements(By.CSS_SELECTOR,'div.g')
for n,el in enumerate(elements):
    elements = driver.find_elements(By.CSS_SELECTOR,'div.g')
    elements[n].click()
    time.sleep(1)
    driver.back()
    time.sleep(1)
driver.quit()

尝试查找元素,然后移动开始循环并找到相同的结果,并通过枚举函数中的项目编号从该循环中获取项目。

from time import sleep
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.action_chains import ActionChains

def company_info(driver):
    com_name = driver.find_element_by_xpath('Enter your site xpath')
    print(com_name.text)

    com_addr = driver.find_element_by_xpath('Enter your site xpath')
    print(com_addr.text)

    com_tel = driver.find_element_by_xpath('Enter your site xpath')
    print(com_tel.text)

    com_fax = driver.find_element_by_xpath('Enter your site xpath')
    print(com_fax.text)

driver = webdriver.Chrome()
url_search = 'Enter your site URL'

    #input values
web_open_wait = 5
web_close_wait = 3
driver.get(url_search)
sleep(web_open_wait)

check_names = driver.find_elements_by_xpath('//*[@id="frm"]/table/tbody/tr[1]/td/a'
for n,el in enumarate(check_names,start=1):
    check_names = driver.find_elements_by_xpath('//*[@id="frm"]/table/tbody/tr[%d]/td/a' % n)
    check_name[el].click()

    company_info(driver)
    driver.back()

driver.quit()
,

我们会找到答案。像我们一样

我在想我刚刚放在上面的代码,当我考虑如何修复@Vovo时,我想出了这个方法,这是您给我的提示之一,行不能重复出现。 它看起来不漂亮,但效果很好。

(因为我打开的网站不能点击控件,所以很难用两个驱动。)

无论如何。分享。希望对看到的人有所帮助。

我想做的是, 输入包含公司信息的站点, 在公开的信息中, 我试图提取公司名称、地址、联系信息和传真号码。

操作顺序为: 站点访问> 设置所需数据的xpath 路径> 单击> 提取> 结束站点

重复这个循环 随心所欲

作为参考,我打开的网站就像 Control + Cilck 或类似的东西。如果单击它,则必须无条件加载元素。回去或前进,所以它一直在伤害。 打开它并提取它并关闭它并提取它并关闭它会很舒服。 如果有任何改进,请告诉我

from time import sleep
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.action_chains import ActionChains

def company_info():
    com_name = driver.find_element_by_xpath('Enter your site xpath')
    print(com_name.text)

    com_addr = driver.find_element_by_xpath('Enter your site xpath')
    print(com_addr.text)

    com_tel = driver.find_element_by_xpath('Enter your site xpath')
    print(com_tel.text)

    com_fax = driver.find_element_by_xpath('Enter your site xpath')
    print(com_fax.text)

num_add = 0
while True:
    driver = webdriver.Chrome()
    url_search = 'Enter your site URL'

    #input values
    web_open_wait = 5
    web_close_wait = 3

    # Url Open
    driver.get(url_search)
    sleep(web_open_wait)

    # Collect info
    num_add += 1
    check_name = driver.find_element_by_xpath('//*[@id="frm"]/table/tbody/tr[{0}]/td[2]/a'.format(num_add))
    check_name.click()

    sleep(web_open_wait)
    company_info()

    # Url Close
    driver.quit()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?