我有一个 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
我如何只知道在selenium中切换到这个iframe
<iframe name="Dialogue Window">
Run Code Online (Sandbox Code Playgroud) 在官方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%遵循"等.但是,我想知道的是:
javascript selenium google-chrome chromium chrome-web-driver
对于我现在正在测试的门户,我遇到了无法创建任何 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。
谢谢!
我在iframe中有一个表单,它位于jQuery UI对话框中.表单包含文件输入类型.jQuery UI对话框包含一个Upload按钮.单击此按钮时,我想以编程方式调用submit方法.我的问题是如何使用jQuery选择iframe中的表单.以下代码应阐明图片:
<div id="upload_file_picker_dlg" title="Upload file">
<iframe id="upload_file_iframe" src="/frame_src_url" frameborder=0 width=100% scrolling=no></iframe>
</div>
Run Code Online (Sandbox Code Playgroud)
frame_src_url包含:
<form action="/UploadTaxTable" enctype="multipart/form-data" method="post" id="upload-form">
<p>Select a file to be uploaded:</p>
<p>
<input type="file" name="datafile" size="60">
</p>
Run Code Online (Sandbox Code Playgroud)
jQueryUI对话框的javascript代码:
$('#upload_file_picker_dlg').dialog({
...
buttons: {
'Close': function() {
$(this).dialog('close');
},
'Upload': function() {
$('#upload-form').submit(); //question is related to this line
$(this).dialog('close');
}
},
....
});
Run Code Online (Sandbox Code Playgroud)
从上面的javascript代码段中,如何选择id为upload upload-form的表单,该表单位于iframe为upload_file_iframe的iframe中?
我想从以下 html 行中选择文本:
<h3 data-reacid ='64'> text to select <h3>
Run Code Online (Sandbox Code Playgroud)
我尝试使用xpath。但由于某种原因,selenium无法通过xpath找到这个元素。我想通过“data-reactid”属性选择文本。我不知道该怎么做。我正在将 selenium 与 python 一起使用。
什么是硒?
当您打开Selenium的官方页面时,您首先读到的是“什么是Selenium?”中的“ Selenium automates browser”。部分。“硒的哪个部分适合我?”部分 下面提供了Selenium WebDriver和Selenium IDE之间的选择。据此,我推断出Selenium是工具的集合,该集合包括IDE,WebDriver API(语言绑定),Grid,Selenium Standalone Server,浏览器驱动程序。必须下载适当的文件才能构建项目。
什么是WebDriver?
WebDriver是一个API。它用多种语言编写,这些语言称为语言绑定。API具有控制浏览器的功能。您可以使用这些功能编写脚本来以所需的方式(测试用例)控制浏览器。
这就是我所知道的。如果我错了,请纠正我。我想从面试的角度知道这两个问题的答案。
我有一个输入框,例如我在这里用来输入问题的输入框,其HTML是
<body id="tinymce" class="mce-content-body" contenteditable="true" onload="window.parent.tinymce.get('Description').fire('load');" spellcheck="false" style="padding-bottom: 50px; padding-left: 1px; padding-right: 1px; overflow-y: hidden;">
<p>
<br data-mce-bogus="1"/>
</p>
</body>
Run Code Online (Sandbox Code Playgroud)
每次我都尝试输入一些文字
@FindBy(xpath="//body[@id='tinymce']") WebElement Category_Body;
Category_Body.sendKeys("Android Smart Phone - 16GB");
Run Code Online (Sandbox Code Playgroud)
我得到了错误-
org.openqa.selenium.NoSuchElementException:无法找到元素:{“ method”:“ xpath”,“ selector”:“ // body [@ id ='tinymce']”}
selenium ×6
iframe ×3
python ×3
javascript ×2
webdriver ×2
chromium ×1
forms ×1
jquery-ui ×1
protractor ×1
xpath ×1