选择一个小型学习项目,通过修改日期找到最便宜的汽车租赁。
网站: Costco Travel
流量:选择省 - >租车 - >输入机场代码,更改日期,时间。
问题:无法选择接送时间或下车时间。
到目前为止我的代码(效果很好) -
var rootDir = Directory.GetParent(Environment.CurrentDirectory);
var chromeDriverDir = rootDir.EnumerateDirectories("ChromeDriver", SearchOption.AllDirectories);
if ((chromeDriverDir != null) && (chromeDriverDir.Count() == 0))
Environment.Exit(-1);
var Driver = new ChromeDriver(chromeDriverDir.ToList()[0].FullName);
Driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);
Driver.Manage().Window.Position = new System.Drawing.Point(0, 0);
Driver.Manage().Window.Maximize();
Driver.Navigate().GoToUrl("https://www.costcotravel.ca/");
Driver.FindElementByXPath("//label[contains(text(), \"Ontario\")]").Click(); // Select Province
Driver.FindElementByXPath("//button[contains(text(), \"Continue\")]").Click(); // Click on Continue
Driver.FindElementByXPath("//li[@data-tab=\"rental-cars\"]/a").Click(); // Click on "Rental Cars" Driver.FindElementById("pickupLocationTextWidget").SendKeys("yyz");
Driver.FindElementByXPath("//li[@class=\"airport\" and @data-value=\"YYZ\"]").Click(); // Select the airport
Driver.FindElementById("pickupDateWidget").Clear(); Driver.FindElementById("pickupDateWidget").SendKeys("01/05/2018"); // Select pick-up date
Driver.FindElementByXPath("//div[@id=\"pickup_time_widget\"]/input").Click();
现在,问题 -
new SelectElement(Driver.FindElementById("pickupTimeWidget")).SelectByText("11:00 AM");
'元素不可见:元素当前不可见,可能不是 操纵
Driver.FindElementByXPath("//div[@id=\"pickup_time_widget\"]/div/ul/li[@data-value=\"07:30 AM\"]").Click();
元素不可见
new SelectElement(Driver.FindElementByXPath("//div[@id=\"pickup_time_widget\"]/div/ul/li[@data-value=\"07:30 AM\"]")).SelectByIndex(5);
元素应该被选中但是是
非常感谢任何有关从提取时间/下降时间下拉菜单中选择值的帮助!通常,我看到很多网站只实现select
标记,但此网站也有ul/li
标记,这使得它变得复杂。或者也许我在思考。请帮忙!
答案 0 :(得分:1)
有一些潜在的df1 <- data.frame("DE" = c("Europa | Deutschland | München", "Europa | England | London", "Europa | Germany | Berlin ", "Europa | Italy | Venedig"),
stringsAsFactors = FALSE)
df2 <- data.frame("GE" = c("Deutschland", "Italien", "England"),
"EN" = c("Germany", "Italy", "UK"),
stringsAsFactors = FALSE)
元素可以为这些下拉列表提供支持。但是,只要“ul-&gt; li”下拉列表中的值发生变化,它们就会变得不可见并发生变化。
这里有两个一般选项:
select
元素可见并使用select
类来控制下拉列表SelectElement
元素不可见,而是控制“ul-&gt; li”下拉列表 第一个选项只需要将select
元素的style
设置为“display:block”:
select
第二个选项首先需要点击才能打开下拉列表:
IWebElement element = Driver.FindElementById("pickupTimeWidget");
((IJavaScriptExecutor)Driver).ExecuteScript("arguments[0].style = 'display:block';", element);
new SelectElement(element).SelectByText("11:00 AM");
然后,按值/文本查找下拉项并单击它:
IWebElement dropdown = Driver.FindElementById("pickup_time_widget");
dropdown.Click();