https://shop.medtronic-diabetes.ch/
在上述网站中,点击右上角的 Anmelden 链接,倒数第三。 我无法找到电子邮件xpath,因为它是框架的一部分。
在下面尝试过但没有运气
driver.switchTo().frame(0);
driver.switchTo().frame("cbox1556878105885");
driver.switchTo().frame("cboxIframe");
driver.switchTo().frame(find_element_by_xpath(//xpath));
答案 0 :(得分:1)
尝试使用以下定位器。
Driver.Navigate().GoToUrl("https://shop.medtronic-diabetes.ch/");
WebDriverWait webDriverWait = new WebDriverWait(Driver, TimeSpan.FromSeconds(30));
var loginElement = webDriverWait.Until(ExpectedConditions.ElementToBeClickable(By.CssSelector("div[class='registerNow firstChild'] a[title='Anmelden']")));
loginElement.Click();
webDriverWait.Until(ExpectedConditions.FrameToBeAvailableAndSwitchToIt(By.ClassName("cboxIframe")));
var email = webDriverWait.Until(ExpectedConditions.ElementToBeClickable(By.Id("j_username")));
email.SendKeys("Rd@test.com");
建议的切换到iframe的方法是使用webdriverwait-预期的条件,例如ExpectedConditions.FrameToBeAvailableAndSwitchToIt
。
如果您有iframe的ID,请使用Driver.SwitchTo().Frame("frameID");
然后使用Driver.SwitchTo().DefaultContent();
来选择页面或主文档的第一帧,或者使用Driver.SwitchTo().ParentFrame();
来选择父框架
答案 1 :(得分:0)
要单击位于右上角(即倒数第3个)的文本为 Anmelden 的元素,然后将字符序列发送到电子邮件< / em>字段,您需要诱使 WebDriverWait 使元素可点击,并且可以使用以下任一解决方案:
cssSelector
:
driver.get("https://shop.medtronic-diabetes.ch/");
new WebDriverWait(driver, 10).until(ExpectedConditions.elementToBeClickable(By.cssSelector("li.firstRow a[title='Anmelden']"))).click();
new WebDriverWait(driver, 10).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.cssSelector("iframe.cboxIframe")));
new WebDriverWait(driver, 10).until(ExpectedConditions.elementToBeClickable(By.cssSelector("input.signInboxInputFields#j_username"))).sendKeys("Mohit_Garg");
xpath
:
driver.get("https://shop.medtronic-diabetes.ch/");
new WebDriverWait(driver, 10).until(ExpectedConditions.elementToBeClickable(By.xpath("//li[@class='firstRow']//a[text()='Anmelden']"))).click();
new WebDriverWait(driver, 10).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.xpath("//iframe[@class='cboxIframe']")));
new WebDriverWait(driver, 10).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@class='signInboxInputFields required' and @id='j_username']"))).sendKeys("Mohit_Garg");
浏览器快照: