相关疑难解决方法(0)

Selenium - 等待元素出现、可见和可交互

我有一个 Selenium 脚本(Python),它点击回复按钮使anonemail类出现。anonemail 类出现的时间各不相同。因此,我必须使用 sleep 直到元素出现。

我想等到课程出现而不是使用睡眠。我听说过等待命令,但我不知道如何使用它们。

这是我迄今为止所拥有的:

browser.find_element_by_css_selector(".reply-button").click()
sleep(5)
email=browser.find_element_by_css_selector(".anonemail").get_attribute("value")
Run Code Online (Sandbox Code Playgroud)

python selenium selenium-webdriver webdriverwait expected-condition

37
推荐指数
5
解决办法
6万
查看次数

13
推荐指数
2
解决办法
2万
查看次数

webdriver的官方定位策略

官方W3c webdirver文档中,明确指出位置策略是:

State   Keyword
CSS selector    "css selector"
Link text selector  "link text"
Partial link text selector  "partial link text"
Tag name    "tag name"
XPath selector  "xpath"
Run Code Online (Sandbox Code Playgroud)

但是,Selenium的电线协议允许:

class name  
css selector
id  
name
link text
partial link text
tag name
xpath
Run Code Online (Sandbox Code Playgroud)

在理论中,Selenium的文档已经过时,"真实"的故事在新的规范文档中.然而...

我在最新的Chrome自己的Webdriver上运行了一些测试,我可以确认这一点,name并且class name两者都有效; 但是,它们不符合规格.

我记得在Chromium问题上阅读他们只会实现官方的Webdriver规范.

现在:我知道通用答案,其中"规格并不总是100%遵循"等.但是,我想知道的是:

  • 你能找到Chromium中实现这个的代码吗?(链接将是最受欢迎的)
  • 在Chromium邮件列表中是否有关于这些的讨论?
  • "非官方"命令("旧"硒规格文件中记录的)可能会留下来吗?你在哪里读到的?

javascript selenium google-chrome chromium chrome-web-driver

12
推荐指数
1
解决办法
5128
查看次数

iframe下#document的处理方式

对于我现在正在测试的门户,我遇到了无法创建任何 xpath 定位器的问题,一段时间后我发现这是因为“#document”,这会切断路径并制作简单的“复制 xpath” " 将路径指向一个完全不同的元素。

<iframe id="FRAMENAME" src="/webclient/workspace/launch-task/REMbl?ds=BP" width="100%" height="100%" frameborder="0" data-navitemname="navitemname" style="" xpath="1">
#document
    <html>
        CODE....
    </html>
Run Code Online (Sandbox Code Playgroud)

我找到了解决方案,只需添加一个像这样的 switchTo:

driver.switchTo().frame("FRAMENAME");
Run Code Online (Sandbox Code Playgroud)

这有效并使其余代码正常工作,但是需要一些额外的时间来处理此命令,直到代码移动到下一行。

所以我想问一下,有没有更好的解决方案?更智能/更快的东西?

我担心当我有很多脚本的时候,执行时间会太长。

例如,我不使用 id 定位器,因为它们都是动态的,因此有时需要 xpath。

谢谢!

javascript iframe selenium selenium-webdriver protractor

8
推荐指数
2
解决办法
8829
查看次数

如何在 Python 中使 Selenium WebDriver 休眠几毫秒

time在我的脚本中使用库:

import time
time.sleep(1)
Run Code Online (Sandbox Code Playgroud)

它可以让我的 Selenium WebDriver 休眠一秒钟,但 250 毫秒怎么可能呢?

python selenium webdriver selenium-webdriver webdriverwait

6
推荐指数
1
解决办法
2万
查看次数