我需要帮助。 我的“ for”循环不会继续。
我错过了这个循环吗?还是应该做些什么来继续循环? 该代码用于从网站提取联系人。访问网址后,代码将打开第二个窗口。我第一次设法从第二个窗口中提取代码,但是“ for”循环不会继续。我应该怎么做才能继续这种关系?下面是代码:
null
答案 0 :(得分:0)
您应该避免
time.sleep(x)
尽可能! 在Selenium中,这会导致您出现一些错误。 相反,您应该使用“ ExpectedConditions”,例如:presentation_of_element_located(理想情况下按ID)。
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "myDynamicElement"))
您将需要以下库来运行以下代码:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
在这种情况下,它将等待10秒钟,直到找到您的元素为止;如果找不到该元素,则抛出“ TimeoutException”。这是等待元素的更优化的方法。 您还应避免使用Javascript单击,而应使用Selenium的“ .click”方法。
您的变量名称不正确。 在这种情况下,“ lista_do_for”并不精确。也许重命名为“ elementOfPage”或类似的名称。
关闭页面并要返回到原始页面后,您应该通过执行以下操作来重新调整该页面的焦点:
self.driver.switch_to.window(self.driver.window_handles[0])
此外,我建议您阅读python Selenium文档以全面了解该框架及其工作原理:
https://selenium-python.readthedocs.io/index.html
在某些情况下可以为您省钱。
希望这对您有帮助!