【问题标题】:Why the error occured python3 with selenium为什么错误发生 python3 与 selenium
【发布时间】:2019-02-21 00:07:20
【问题描述】:

我最近在学习python,但是我有一些错误。

环境 python3 , chrome , webdriver(chrome)

from selenium import webdriver
import time
import random
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

driver = webdriver.Chrome("./chromedriver.exe") 

mobile_emulation = { "deviceName": 'Nexus 5' }
chrome_options = webdriver.ChromeOptions()


chrome_options.add_experimental_option("mobileEmulation", mobile_emulation)


driver = webdriver.Remote(command_executor='https:xxx.com',desired_capabilities = chrome_options.to_capabilities())


driver.get("https:/xxx.com")

num = random.randint(11111111 , 99999999)

red = driver.find_element_by_class_name("***")
red.click()

numBox = driver.find_element_by_name("***")
numBox.send_keys(int(num))

reader = driver.find_element_by_id("***")
reader.send_keys("***")

comment = driver.find_element_by_css_selector(" ***")
comment.click()

结果错误就在这里

Traceback (most recent call last):
  File "C:\python\pad\pad.py", line 16, in <module>
    driver = webdriver.Remote(command_executor='https:xxx.com',desired_capabilities = chrome_options.to_capabilities())
  File "C:\Users\***\AppData\Local\Programs\Python\Python37-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 156, in __init__
    self.start_session(capabilities, browser_profile)
  File "C:\Users\***\AppData\Local\Programs\Python\Python37-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 254, in start_session
    self.session_id = response['sessionId']
TypeError: string indices must be integers

我认为错误是因为此代码的数量包括十进制。但我找不到这样的号码。

请给我建议

【问题讨论】:

  • 您的网络驱动程序是最新的吗?
  • 我两天前安装了驱动。所以...

标签: python-3.x selenium google-chrome selenium-webdriver selenium-remotedriver


【解决方案1】:

此错误消息...

Traceback (most recent call last):
  File "C:\python\pad\pad.py", line 16, in <module>
    driver = webdriver.Remote(command_executor='https:xxx.com',desired_capabilities = chrome_options.to_capabilities())
.
TypeError: string indices must be integers

...暗示在调用 webdriver.Remote() 方法时存在 TypeError

根据您使用 webdriver.Remote() 和参数 command_executor 的代码试验,也许您正试图在 Selenium Grid Configuration 中执行测试

根据文档documentation

  • command_executor:remote_connection.RemoteConnection 对象用于执行命令。

    • 例子:

      command_executor='http://127.0.0.1:4444/wd/hub'
      
    • 完整的实现:

      driver = webdriver.Remote(command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities = chrome_options.to_capabilities())
      

注意:这里我们认为 Selenium Grid HubSelenium Grid Node 已配置成功,并且默认配置为 on本地主机。

解决方案(Python 3.6)

您的有效代码块将是:

from selenium import webdriver

chrome_options = webdriver.ChromeOptions() 
chrome_options.add_argument("start-maximized")
chrome_options.add_argument('disable-infobars')
#driver = webdriver.Remote(command_executor='https:xxx.com', desired_capabilities = chrome_options.to_capabilities())
driver = webdriver.Remote(command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities = chrome_options.to_capabilities())
driver.get('https://www.google.co.in')
print("Page Title is : %s" %driver.title)
driver.quit()

【讨论】:

  • 感谢您的评论。我在 127.0.0.1:4444/wd/hub 中没有文件。可以吗?我参考这个网站sites.google.com/a/chromium.org/chromedriver/mobile-emulationpython 代码。
  • 补充:我想在智能手机网站上进行浏览器测试。
  • @unowen 你能抽出一些时间再看一遍我的答案吗?当您使用涉及 HubNodeSelenium Grid 配置时,使用参数 command_executor。如果您不使用 Selenium Grid,则不应使用 argument command_executor
  • @unowen 如果我的answer满足了您的question,请点击空心处Acceptanswer我的 answer 旁边的复选标记位于 votedown 箭头下方,因此复选标记变为 绿色
  • 澄清:command_executor 用于远程 webdriver。 ...无论您使用的是网格还是独立的 selenium 服务器。
猜你喜欢
  • 2017-07-20
  • 2017-02-11
  • 2020-07-17
  • 2015-09-29
  • 1970-01-01
  • 2018-08-20
  • 2016-03-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多