我一直在与Selenium和Fiverr.com合作,我遇到了一些我希望得到一些帮助的问题。我试图创造一个新的演出,我已经设法做了所有事情,但仍有一些事情让我感到难过。一件事是图片上传。
•你有一个按钮,你单击一个文件输入类型(),打开一个Windows对话框,到目前为止,我的计划使用SendKeys.SendWait
已经工作,除了你推动的部分"打开& #34;在Windows对话框中提交图片。我尝试过使用SendKeys.SendWait(" {ENTER}")点击它,但到目前为止我还没有为我工作,所以有什么想法吗?除非P / Invoke能够处理Windows对话框,否则我无法想到其他任何方法吗?
•我还尝试在“说明”中输入文字。盒子,还没有能够做到这一点。我试图通过类名来获取它,但它告诉我它无法访问该类,因为它是隐藏的,也尝试通过Javascript(IJavaScriptExecutor
)这样做:
IWebElement detailFrame = firefoxDriver.FindElement(By.XPath("/html/body"));
var executor = firefoxDriver as IJavaScriptExecutor;
executor.ExecuteScript("arguments[0].innerHTML = 'hiiiiiiii'", detailFrame);
它很奇怪,因为他们正在使用body作为文本字段,如下所示:
<body marginwidth="0" marginheight="0" spellcheck="true" class="wysihtml5-editor" contenteditable="true" style="color: rgb(119, 119, 119); cursor: auto; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; letter-spacing: normal; text-align: start; text-decoration: none; text-indent: 0px; text-rendering: auto; word-break: normal; word-wrap: break-word; word-spacing: 0px; overflow: auto; background-color: rgb(255, 255, 255);">TEXT HERE<span id="_wysihtml5-undo" class="_wysihtml5-temp"></span></body>
我认为他们正在使用两种不同的身体&#39;虽然,但XPath只显示它的/ html / body。我如何设置这样的文本?
谢谢你们的帮助,过去两个小时一直在这里。
答案 0 :(得分:1)
Selenium具有处理窗口的机制。您可以使用driver.SwitchTo().Window("");
将焦点设置在新打开的窗口上并对其执行其他操作。但是,请记住要回到父窗口,您可能需要再次使用默认内容。有关其他窗口处理技术,请参阅here。
首先,硒不识别隐藏元素。如果您确定该元素未被隐藏,那么我可能会说您使用的选择器可能不正确。如果我理解你提供的html并且元素是可见的,那么我建议你使用xpath作为该元素。 //*[@id='_wysihtml5-undo']//..
可以为您提供帮助