我正在使用C#Selenium.WebDriver.2.44.0 在某些第三方网站上,我正在尝试按下一个元素并获取此信息:
var myWebElement = Driver.FindElement(By.XPath("//a[.=' some value']
myWebElement.Click();
我得到了元素,点击后我得到了这个:
{"element not visible\n (Session info: chrome=39.0.2171.95)\n (Driver info: chromedriver=2.9.248315,platform=Windows NT 6.1 SP1 x86_64)"}
在成功按下父菜单后,该项目在某个子菜单中显示。也可以放5秒睡觉,以确保手风琴很好看(在我的眼中很明显)。
问题 - 在第三方网站上如何强制点击此项?
答案 0 :(得分:0)
您可以尝试使用driver.execute_script()更改z-index,将其置于顶部。
答案 1 :(得分:0)
您可以使用内置函数和WebDriver等待
var myWebElement = Driver.FindElement(By.XPath("//a[.=' some value']
WebDriverWait wait = new WebDriverWait(Driver.FindElement, TimeSpan.FromSeconds(10));
var element = wait.Until(ExpectedConditions.ElementIsVisible(myWebElement));
Actions action = new Actions(Driver.FindElement);
action.MoveToElement(element).Perform();
myWebElement.Click();
答案 2 :(得分:0)
问题在于Selenium一个接一个地执行操作,但是在操作之间丢失了诸如“显示子菜单”之类的内容。
您可能不得不使用Actions
链:
Actions action = new Actions(Driver);
action.MoveToElement(Driver.FindElement(By(ParentElementSelector)))
.click()
.MoveToElement(Driver.FindElement(By.XPath("//a[.=' some value'])))
.click()
.Build()
.Perform();
这将移动到父元素,单击,然后移动到要查找的元素,然后单击。它将执行所有这些操作作为一个操作,应该能够单击子菜单元素。
答案 3 :(得分:-1)
当一个元素不可见时你可以试试这个......它对我有用
IWebElement WEHiddenID = driver.FindElement(By.Id(""));
WEHiddenID.SendKeys(OpenQA.Selenium.Keys.Enter);