我正在尝试使用C#和Selenium自动化Paypal提款。应用程序使用提供的凭据登录到Paypal,然后单击“转移资金”链接,然后显示弹出窗口(看起来像是iframe)。我的问题是我无法点击弹出窗口中的任何元素,我已经尝试了所有可以找到的建议。
以下是表单和底层html的截图:
我正在尝试点击“发件人”下拉菜单以及我尝试过的其他内容:
driver.FindElement(By.XPath("//*[@id=\"selection-container\"]/form/section/table/tbody/tr[2]/td/div[1]/div[1]")).Click();
和
((IJavaScriptExecutor)driver).ExecuteScript("arguments[0].hidden = false;", driver.FindElement(By.XPath("//*[@id=\"selection-container\"]/form/section/table/tbody/tr[2]/td/div[1]/div[1]")));
但要么得到'无法定位元素'或'元素不可见'错误。如何进入弹出窗口中的“From”输入元素? (如果您使用的是paypal,您还可以登录并在需要时查看弹出窗口)。
答案 0 :(得分:2)
您需要先切换到iframe
IWebElement frame = driver.FindElement(By.TagName("iframe")); // locate the iframe element
driver.SwitchTo().Frame(frame);
driver.FindElement(By.XPath("//*[@id=\"selection-container\"]/form/section/table/tbody/tr[2]/td/div[1]/div[1]")).Click();
并切换回来
driver.SwitchTo().DefaultContent();
答案 1 :(得分:0)
尝试
[FindsBy(How = How.CssSelector, Using = "div[class$='source-dropdown']")]
public IWebElement _ddSource;
'$'
指定属性的结尾,如果类的结尾为source-dropdown
答案 2 :(得分:0)
首先你需要切换到那个iframe。使用以下代码:
// ReSharper disable All
现在您可以使用此cssSelector单击该弹出窗口:
IWebElement frame = driver.FindElement(By.CssSelector("iframe[src ='/moneytransfer']");
driver.SwitchTo().Frame(frame);