这是代码。
browser = new FirefoxDriver();
browser.Navigate().GoToUrl("https://www.vicroads.vic.gov.au/registration/buy-sell-or-transfer-a-vehicle/buy-a-vehicle/check-vehicle-registration/vehicle-registration-enquiry");
Thread.Sleep(5000);
browser.FindElement(By.Name("ph_pagebody_0$phthreecolumnmaincontent_1$panel$VehicleSearch$RegistrationNumberCar$RegistrationNumber_CtrlHolderDivShown")).SendKeys("asdf");
它工作正常但是如果我在线程中运行它会显示元素不可见....为什么它会抛出一个线程?
答案 0 :(得分:0)
元素可能是不可见的cuz页面在检查时刻或使用动态名称,类等的网站没有重新加载。
您可以尝试这样的事情:
IWebDriver browser = new FirefoxDriver();
browser.Navigate().GoToUrl("https://www.vicroads.vic.gov.au/registration/buy-sell-or-transfer-a-vehicle/buy-a-vehicle/check-vehicle-registration/vehicle-registration-enquiry");
while ( true ) {
try {
browser.FindElement(By.Name("ph_pagebody_0$phthreecolumnmaincontent_1$panel$VehicleSearch$RegistrationNumberCar$RegistrationNumber_CtrlHolderDivShown")).SendKeys("asdf");
break;
}
catch { Thread.Sleep(1000);}
}
答案 1 :(得分:0)
在您尝试的xpath
之后,似乎name
属性是动态的。要找到 Registration number
的文本框,您可以尝试以下任一选项:
CssSelector
:
browser.FindElement(By.CssSelector("input[class=text text xlong v_registrationNumber v_required][id^=ph_pagebody_)]")).SendKeys("asdf");
XPath
:
browser.FindElement(By.XPath("//input[@class='text text xlong v_registrationNumber v_required'][starts-with(@id, 'ph_pagebody_')]")).SendKeys("asdf");