Python 需要使用硒的帮助吗
我想去这个网站: 然后单击“Tabella”选项卡 然后查看表格的第二页(共64页) 然而,我在第一部分失败了,我无法编写代码来单击“Tabella”选项卡 下面是我用来搜索的html代码:Python 需要使用硒的帮助吗,python,selenium,Python,Selenium,我想去这个网站: 然后单击“Tabella”选项卡 然后查看表格的第二页(共64页) 然而,我在第一部分失败了,我无法编写代码来单击“Tabella”选项卡 下面是我用来搜索的html代码: <li id="Tabella" class="Table_img ui-state-default ui-corner-top ui-tabs-selected ui-state-active"> <span id=
<li id="Tabella" class="Table_img ui-state-default ui-corner-top ui-tabs-selected ui-state-active">
<span id="span_table_img" class="span_img"></span>
<a href="#ui-tabs-1" rel="nofollow">Tabella</a> </li>
谢谢大家 在访问表元素之前添加时间睡眠
time.sleep(5)
driver.find_element_by_id('Tabella').click()
要单击
Tabella
选项卡,您需要导入WebDriverWait
(),并等待元素可单击
(),您可以使用以下定位器
链接文本:
driver.get("http://www.datiopen.it/it/opendata/Mappa_delle_stazioni_ferroviarie_in_Italia")
WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.LINK_TEXT,"Tabella"))).click()
XPATH:
driver.get("http://www.datiopen.it/it/opendata/Mappa_delle_stazioni_ferroviarie_in_Italia")
WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//a[text()='Tabella']"))).click()
您需要导入以下库
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
代码有问题
driver = webdriver.Chrome()
driver.get('http://www.datiopen.it/it/opendata/Mappa_delle_stazioni_ferroviarie_in_Italia')
def wait_for_element_to_be_clickable(element):
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID, element)))
wait_for_element_to_be_clickable("Tabella")
element = driver.find_element_by_id("Tabella")
element.click()
print("executed")
您试图在元素可用/准备在DOM中单击之前单击该元素
解决方案
您需要等待该元素加载并成为可单击的,以便对同一元素执行任何类型的操作
time.sleep(5)
driver.find_element_by_id('Tabella').click()
代码
driver = webdriver.Chrome()
driver.get('http://www.datiopen.it/it/opendata/Mappa_delle_stazioni_ferroviarie_in_Italia')
def wait_for_element_to_be_clickable(element):
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID, element)))
wait_for_element_to_be_clickable("Tabella")
element = driver.find_element_by_id("Tabella")
element.click()
print("executed")
def wait_等待元素可点击(元素):
此方法将等待任何元素可点击后再继续。(您可以根据页面加载时间增加时间)。有什么错误?@Wups我将其更改为element=driver。通过xpath(“a[@href=”#ui-tabs-1'])查找元素仍然不起作用。错误是:elementnotinteractivatableexception:element不可交互(会话信息:chrome=85.0.4183.102)
谢谢,但是真的需要使用这么多库吗?我的意思是这是一个非常简单的问题task@MarkBils:WebDriverWait()
是与浏览器交互时的最佳实践。这将帮助您解决浏览器同步问题,您可以解决elementnotinteractiableexception
之类的问题,并且没有此类元素异常。它工作得非常好!你能告诉我这是什么逻辑吗?@Mark Bils的逻辑是,selenium在加载页面时尝试访问元素,但某些元素仍在进行中,这就是为什么它们不存在于页面的DOM中。您可以使用time.sleep
或WebDriverWait
让它们完全加载。