Webscraping - 单击高级搜索选项卡不会最大化选项卡

Webscraping - Clicking on Advanced Search Tab will not maximize the tab

我正在浏览此网站 https://portal.betterwork.org/transparency/compliance,我正在尝试在“高级搜索”'Factory' 框中键入特定工厂的名称。

我注意到如果在浏览器由 Selenium 控制时我不手动单击该框,我将无法输入任何工厂名称并且系统停止(或崩溃)。

这是我目前所拥有的

driver = webdriver.Chrome(executable_path=r"C:\webdrivers\chromedriver.exe")
driver.get("https://portal.betterwork.org/transparency/compliance#")
driver.implicitly_wait(20)

element = driver.find_element_by_id("pnlHdAdvanceSearch")
ActionChains(driver).move_to_element(element).click(element).perform()
element = driver.find_element_by_id("txtSearchFactory")
ActionChains(driver).move_to_element(element).click(element).perform()
element.send_keys('PT Glory Industrial Semarang Demak')
element = driver.find_element_by_id("btnSearchData")
element.send_keys(Keys.RETURN)
elemnts = find_element_by_tag_name("iframe")
print(elemnts) 

这里到底是什么问题?

谢谢!

需要适当的同步才能执行您需要的操作

  1. 导航到您的 URL 后,它开始显示 2 个加载程序,因此您需要等到它们都被隐藏
  2. 展开高级搜索 > 输入文本并点击搜索按钮

使用下面的代码。我最后检查了一下,它工作得很好。

driver.get('https://portal.betterwork.org/transparency/compliance')

wait = WebDriverWait(driver, 45)
wait.until(EC.invisibility_of_element((By.ID, "loader-wrapper")))
wait.until(EC.invisibility_of_element((By.CSS_SELECTOR, "div.k-loading-mask")))
input_text = 'Namlee International Co. Ltd.'
driver.find_element_by_id("pnlHdAdvanceSearch").click()
driver.find_element_by_id("txtSearchFactory").send_keys(input_text)
driver.find_element_by_id("btnSearchData").click()
view_button = "//tr[contains(.,'{}')]/td/a"
time.sleep(3)
wait.until(EC.visibility_of_element_located((By.XPATH, view_button.format(input_text)))).click()