【发布时间】:2021-05-05 05:53:43
【问题描述】:
我试图在网站上输入用户名字段,但我意识到它位于页面上的 iframe 内。 iframe html代码和输入框html代码如下:
<iframe class="_2_i9tg _2_i9tg" src="https://gateway-members.bet365.com/v1/auth/oauth/authorise?client_id=BDE2D5E4-127D-48D4-A963-BB49DC126BF7&scope=sports%20members&response_type=code&redirect_uri=https://secure.oddschecker.com/mapp/b3/callback&state=dXNlcklEOmExNWM4OTUxLTlkY2EtNDQ5OC1iNDc3LWUxNzVhMDdjODdlNVNFUGRldmljZVR5cGU6d2luZG93c1NFUGFwaVJlcHViOmFwaV9PQ1NFUGRldmljZUlkOmExNWM4OTUxLTlkY2EtNDQ5OC1iNDc3LWUxNzVhMDdjODdlNQ"></iframe>
<input autocomplete="off" class="inputtextbox" id="Username" name="Username" placeholder="Username" type="text" value="">
我尝试过多种方式切换到 iframe 并输入文本,例如
WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH, "//iframe[@class='_2_i9tg _2_i9tg']")))
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@id = 'Username'][@class = 'inputtextbox']"))).send_keys("Username")
和
my_iframe = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//iframe[@class='_2_i9tg _2_i9tg']")))
driver.switch_to.frame(my_iframe)
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//@id = 'Username'][@class = 'inputtextbox']"))).send_keys("Username")
当我尝试运行此代码时,我收到一条错误消息:
Browsing context has been discarded
当我不尝试切换框架时,我无法找到输入字段元素。 我错过了什么?
【问题讨论】:
-
您要访问的网站是什么?您的代码看起来或多或少是正确的
-
网站是oddschecker.com。当我在将选项添加到 betslip 后尝试登录博彩公司时出现问题
-
很难说没有看到您的确切事件和点击顺序,但是当我在网站上按登录时,登录表单不会加载到新的 iframe 中。
-
抱歉,我想澄清一下,我并没有尝试登录赔率检查器网站。如果您访问该网站并选择一些内容并将其添加到您的投注单中,您可以选择登录到您选择的博彩公司,例如 bet365。然后出现此登录表单,当我检查它是否在 iframe 中时,我会将屏幕截图添加到我的原始帖子中。
-
啊,我明白了。不幸的是,投注单对我不起作用,所以我无法排除故障。对不起。
标签: python selenium-webdriver xpath iframe css-selectors