我有一个Selify脚本(Python),它可以单击回复按钮来显示类anonmail。班级出现电子邮件的时间长短不一。因此,我必须使用睡眠,直到元素出现。
我想等到上课后再来,而不是用睡眠。我听说过等待命令,但我不知道如何使用它们。
这就是我到目前为止所拥有的:
browser.find_element_by_css_selector(".reply-button").click()
sleep(5)
email=browser.find_element_by_css_selector(".anonemail").get_attribute("value")
6条答案
按热度按时间8yoxcaq71#
根据最佳实践:
presence_of_element_located()
,presence_of_element_located()
是检查元素是否出现在页面DOM上的期望。这并不一定意味着元素是可见的。因此,有效的代码行将是:visibility_of_element_located(locator)
,这是检查元素是否出现在页面的DOM上并且可见的期望。可见性意味着不仅显示该元素,而且它的高度和宽度也大于0。因此,在您的用例中,有效的代码行将是:click()
**,您需要诱导WebDriverWait将Expect_Conditions设置为element_to_be_clickable()
,这是检查元素是否可见并启用以便您可以点击它的期望。因此,在您的用例中,有效的代码行将是:参考资料
您可以在中找到几个详细的讨论:
3j86kqsm2#
点击回复按钮后,使用如下所示的
.visibility_of_element_located
:以下是导入:
Waits documentation
xkrw2x1b3#
你可以使用等待。有关详细信息,请访问*Selenium waits。
在下面的示例中,我们使用函数Visiance_of_Element_Located*等待元素可见,等待10秒。
fkvaft9z4#
您可以使用IMPLICLY_WAIT:
它会一直等到元素加载完毕。
在您的情况下,实现将是,
mum43rcc5#
WebDriverWait(driver, 5).until( EC.presence_of_element_located((By.CSS_SELECTOR, ".reply-button")))
:嘿司机,等一下(0-5秒),当你看到
.reply-button
是存在**时,把那个按钮还给我!*WebDriverWait(driver, 5).until( EC.visibility_of_element_located((By.CSS_SELECTOR, ".reply-button”))))
:司机,等一下(0-5秒),当你看到
.reply-button
是能见度**时,把那个按钮还给我!*WebDriverWait(driver, 5).until( EC.element_to_be_clickable((By.CSS_SELECTOR, ".reply-button”))))
:嘿司机,等一下(0-5秒),当你看到
.reply-button
是可以点击**的时候,把那个按钮还给我!*w9apscun6#
我和你也有类似的问题。我尝试使用
implicit_wait()
和WebDriverWait
,但它们不起作用。因此,我解决了在
web driver
示例中设置implicit_wait(10)
并使用以下代码片段单击按钮的问题: