我使用geckodriver在Python ide中运行Selenium。
我正在尝试打开的网站有一个30秒的计时器,在30秒后出现一个按钮,然后我点击它。
我要问的是以下内容: 我可以以某种方式忽略/跳过/加快等待时间吗?
现在我正在做的是以下内容:
driver = webdriver.Firefox()
driver.get("SITE_URL")
sleep(30)
driver.find_element_by_id("proceed").click()
这是非常低效的,因为每次运行代码进行一些测试时我都需要等待。
提前致谢,Avi。
更新: 我还没有找到克服障碍的方法,但在此之前,我正在努力关注下一个可实现的进展:
<video class="jw-video jw-reset" disableremoteplayback="" webkit-playsinline="" playsinline="" preload="metadata" src="//SITE.SITE.SITE/SITE/480/213925.mp4?token=jbavPPLqNqkQT1SEUt4crg&time=1525458550" style="object-fit: fill;"></video>
(审查网站的名称)
在每个页面都有一个视频,所有视频都在“jw-video jw-reset”类下 我无法逐个使用find元素,因此我使用了:
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, "video[class='jw-video jw-reset']")))
它有效,但我无法想出如何选择元素的src ......
答案 0 :(得分:3)
根据您的代码试用版,您可以删除time.sleep(30)
并诱导 WebDriverWait 以使元素可点击,如下所示:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
# lines of code
WebDriverWait(driver, 30).until(EC.element_to_be_clickable((By.ID, "proceed"))).click()
注意:根据您的用例配置 WebDriverWait 实例的最大时间限制。只要元素可见和启用,expected_conditions
方法element_to_be_clickable()
就会返回 WebElement ,这样您就可以点击它。